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>
It's like saying you want to move to France, so should you learn french from a book, and what are the essential words - or should you just go to France and find out which words you need to know from experience and from copying the locals.

Writing code is part of learning computer science. I was writing code long before I'd even heard of the term, and lots of people were writing code before the term was invented.

Besides, you say you're itching to write certain applications. That can't be taught, so just go ahead and do it. Some things you only learn by doing. 

(The theoretical foundations will just give you a deeper understanding of what you wind up doing anyway, which will mainly be copying other people's approaches. The only caveat is that in some cases the theoretical stuff will tell you what's futile to attempt - e.g. if one of your itches is to solve an NP complete problem, you probably won't succeed :-)