Question: Having been a hobbyist programmer for 3 years (mainly Python and C) and never having written an application longer than 500 lines of code, I find myself faced with two choices :

(1) Learn the essentials of data structures and algorithm design so I can become a l33t computer scientist.

(2) Learn Qt, which would help me build projects I have been *itching* to build for a long time.

For learning (1), everyone seems to recommend reading CLRS. Unfortunately, reading CLRS would take me at least an year of study (or more, I'm not Peter Krumins). I also understand that to accomplish any moderately complex task using (2), I *will* need to understand at least the fundamentals of (1), which brings me to my question : assuming I use C++ as the programming language of choice, **which parts of CLRS would give me sufficient knowledge of algorithms and data structures to work on large projects using (2)?**

In other words, I need **a list of theoretical CompSci topics absolutely essential for everyday application programming tasks**. Also, I want to use CLRS as a handy reference, so I don't want to skip any material critical to understanding the later sections of the book.

Don't get me wrong here. Discrete math and the theoretical underpinnings of CompSci have been on my "TODO: URGENT" list for about 6 months now, but I just don't have enough time owing to college work. After a long time, I have 15 days off to do whatever the hell I like, and I want to spend these 15 days building applications I really *want* to build rather than sitting at my desk, pen and paper in hand, trying to write down the solution to a textbook problem.

(BTW, a less-math-more-code resource on algorithms will be highly appreciated. I'm just out of high school and my math is not at the level it should be.)

Thanks :)

Answer: 
Try some online comp sci courses. Berkeley has some, as does MIT. Software engineering radio is a great podcast also.

See these questions as well:

[What are some good computer science resources for a blind programmer?](https://stackoverflow.com/questions/370976/electronic-computer-science-resources#371557)
<https://stackoverflow.com/questions/360542/plumber-programmers-vs-computer-scientists#360554>
Heed the wisdom of Don and *just do it*. Can you define the features that you want your application to have? Can you break those features down into smaller tasks? Can you organize the code produced by those tasks into a coherent structure?

Of course you can. Identify any 'risky' areas (areas that you do not understand, e.g. something that requires more math than you know, or special algorithms you would have to research) and either find another solution, prototype a solution, or come back to SO and ask specific questions.