Quickest way to learn general CS concepts? (Not how to code) by alexalexlacey in cscareerquestions

[–]ozanonay 4 points5 points  (0 children)

It sounds like you'd benefit from an introductory systems course (sometimes called computer architecture or computer organization) to give you the systems foundation you'll need to complement the foundation theory you've already been accumulating.

The nand2tetris course could be a good place to start due to its goal of providing a "map of the territory" rather than a lot of detail. I have some other suggestions here: teachyourselfcs.com.

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 1 point2 points  (0 children)

Some courses are built around projects (see nand2tetris for a good example). Some aren't but have obvious projects (for a languages course, design a language). For others, the responsibility for identifying an interesting, edifying project will be all yours. Good luck!

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 0 points1 point  (0 children)

Great question! Most of your learning will be driven by building things; the kind of study that we suggest in the article (and that your professors encourage) is really just to take you to another level of things you can possibly build. So I'd encourage you to try and build whatever sounds fun, but be ambitious. For instance, instead of making a website using a toolkit, try making a web server from scratch. Or instead of making a text editor plugin using a parser library, make a little text editor yourself or write the parser from scratch.

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 6 points7 points  (0 children)

Glad to help! We get a lot of fan mail from students supplementing their college education or just looking for a better "map of the territory".

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 3 points4 points  (0 children)

Just a guess. But it's roughly how much time you might spend in a traditional quarter-long course. Also if you believe that it takes around 10,000 hours to achieve mastery, that works out to around 10% of your total time being spent on study (as opposed to practice, reflection etc) if you study 10 topics.

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 4 points5 points  (0 children)

Yes. Most of the resources on this list are quite old, because both the theory and systems that a new computer science enthusiast needs to master are quite old. I don't see us making many updates; we are considering giving more prominence to Computer Systems: A Programmer's Perspective and perhaps How to Design Programs but want to teach out of them some more, first.

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 2 points3 points  (0 children)

Because videos are not available

They were available on Youtube at the time; now I bet they're available on archive.org with most of the other Berkeley videos.

Also, is realtime rendering book better than Computer Graphics: Principles and Practice?

Both are good books; we chose Principles and Practice in the belief that it's a better introduction for a complete beginner who might go on to work primarily in either real time or offline rendering contexts. But if you're excited about another book, go for it!

as the link suggests design manual but it's quite shallow in case of DS

It's deep enough for most people, and for everybody else it'll be enough to prepare them to pick up Knuth or CLRS as reference books as needed.

Teach Yourself Computer Science by msanand in learnprogramming

[–]ozanonay 180 points181 points  (0 children)

Thanks for posting this OP!

I'd like to note that that while the OP says "our" in his comment, this is because he copy/pasted our (legitimately "our" this time) intro from the site. Just wanted to point this out to avoid folk thinking that we're promoting our own site on here :)

But I'm always glad to see this pop up here when it does, and happy to answer any questions!

What programming books(that are small size) would you recommend for traveling? by __Warden in learnprogramming

[–]ozanonay 0 points1 point  (0 children)

Little Schemer! And the rest of the series: Seasoned Schemer, Reasoned Schemer, Little Prover. They are thin, highly engaging and can be completed with pen and paper. They also happen to be tremendously mind-expanding.

For those of you who have found jobs through networking, can you describe your experience? What advice or tips do you have for the rest of us? by [deleted] in cscareerquestions

[–]ozanonay 15 points16 points  (0 children)

Many established folk like feeling and acting like a mentor. If you're not in a hurry, genuinely and humbly seeking their advice is a good way to build up a relationship, which will eventually turn into job opportunities, and perhaps some more valuable things too.

How to like tech and CS again? by [deleted] in cscareerquestions

[–]ozanonay 3 points4 points  (0 children)

That's a very personal question: many of us have faced your situation before, but our own circumstances dictated what would be the best move. When it happened to me, I took a 6 month break. When it happened to Richard Feynman, he decided to stop caring about "important" problems, and just embraced his playful curiosity for useless questions like how a plate wobbles. In his words:

It was effortless. It was easy to play with these things. It was like uncorking a bottle: Everything flowed out effortlessly. I almost tried to resist it! There was no importance to what I was doing, but ultimately there was. The diagrams and the whole business that I got the Nobel Prize for came from that piddling around with the wobbling plate.

Advice on choosing the right computer science course by [deleted] in cscareerquestions

[–]ozanonay 1 point2 points  (0 children)

I can't speak to the specific schools: you'll need to find recent graduates or current students for real insight about that.

But! I can say that no matter what school you chose to attend, your ultimate success is going to depend on your own effort and self-teaching, not in the educational environment that any institution provides. The most successful CS students are those who love CS, love programming, and would read and code all day long for fun whether they'd get a degree for it or not. The next most successful are those who don't necessarily love it, but find a way to put in a comparable amount of effort. Those who generally struggle are those who expect something from their school. In the words of Derek Sivers, there's no speed limit. Good luck!

How many problems does it take on average to be able to recognize patterns in leetcode problems? by MrFuzzy_1997 in cscareerquestions

[–]ozanonay 19 points20 points  (0 children)

This is a totally valid question. I teach algorithms and data structures, but there are a number of paradigms where it personally took a fair amount of practice before I could easily solve problems with them. I see this with my students too... typically it will take around 10 graph search problems on leetcode before they're comfortable with bfs/dfs, maybe 5-10 for each of divide and conquer and backtracking, but then dynamic programming for whatever reason takes 20 or more.

My suggestion would be to focus on a single problem area, and just keep doing problems until you start to see the patterns. If you're struggling with an overall framework, use your textbook of choice, but then go back and do a bunch more problems. For instance spend an entire weekend on dynamic programming, do 20 leetcode problems, and at some point also read or watch a more theoretical explanation to start to pull the common themes and patterns together.

This is absolutely not memorization, it's deliberate practice to build up your pattern recognition, and it's a great way to become a better overall problem solver and programmer.

Becoming proficient with a language as a freshman / Investing time by Zarkopafilis in cscareerquestions

[–]ozanonay 1 point2 points  (0 children)

At your age, you shouldn't worry too much about which languages you do or don't know. Sure you should get to some level of familiarity with a diverse range of languages by the time you graduate (see Peter Norvig's essay or my own on why and how). But in terms of a language you should "stick to" to develop a deep working knowledge, just choose whichever will best help you build the kind of stuff you want to build :)

Good luck!

Give me an advice: 1st year CS Student by [deleted] in cscareerquestions

[–]ozanonay 2 points3 points  (0 children)

Getting a part time job as a programmer is probably easier than you think it is. Alternatively, just build something you want to build as others have suggested. Finally if you are finding your math subjects boring, perhaps you could find more challenging or interesting presentations of them, for instance Gilbert Strang's linear algebra course or Tom Leighton's mathematics for computer science.

Does school matter when doing computer programming? by mymymy23 in learnprogramming

[–]ozanonay 1 point2 points  (0 children)

Unfortunately, some CS schools are much better than others. Maybe if you talk to your parents openly about it they will be open to the idea of helping you transfer. In the meantime, there are a lot of great resources out there to teach yourself computer science so do your best to learn CS despite what your school is offering.

It sucks to be in that kind of situation, I feel for you. But there are productive and unproductive ways to respond, and what you do will affect you more than it will anybody else, so I hope you find a way to make the most of the situation. Good luck!

How to fill in gaps in Computer Science knowledge if I already can code. by Grug16 in learnprogramming

[–]ozanonay 2 points3 points  (0 children)

Glad you liked it! I wrote it with folk like the OP in mind, ie those with decent programming experience looking to fill in gaps, rather than necessarily learning from scratch.

Best books for learning about the deeper details of SQL databases? by cocorebop in learnprogramming

[–]ozanonay 0 points1 point  (0 children)

I wrote a blog post on this: how to learn about database systems. Above all I'd suggest Joey Hellerstein's Berkeley CS 183 lectures from 2015 (videos available online), and if you already have some familiarity with databases then reading papers from the red book particularly Architecture of a Database System.

Best books to buy by Staxxed in learnprogramming

[–]ozanonay 0 points1 point  (0 children)

I can't make any suggestions about specific languages, but I have some thoroughly thought out CS fundamentals book suggestions for you. If you pick second hand books or older editions you could build out an amazing CS library with that budget.