Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Having finished a CS undergrad and followed the OSSU curriculum for some years I can confidently recommend https://teachyourselfcs.com/ instead. The courses chosen are more focused on capital-C capital-S Computer Science, and the resources are better suited for self-paced self-direction. One should start with https://teachyourselfcs.com/ and refer to OSSU if they find the former lacking in some measure.

Self-teaching computer science is a long and winding road. OSSU seems to favor a completionist approach that most people would do well to avoid. Grok on the fundamentals and quickly specialize, because life is too short to learn computer science in an encyclopedic way.



One course from OSSU I personally recommend to add onto Teach Yourself CS is “The Missing Semester of Your CS Education”[1]. For those unfamiliar with the tools needed to work through something like SICP, this course is a godsend.

[1] https://missing.csail.mit.edu/


+1. I recently gave an internal presentation encouraging everyone on my (rather heterogeneous) team to look at that.


Discussions for Teach Yourself Computer Science:

* https://news.ycombinator.com/item?id=29353904 - Nov 26, 2021 | 52 comments

* https://news.ycombinator.com/item?id=23588896 - June 21, 2020 | 265 comments

* https://news.ycombinator.com/item?id=13862284 - March 13, 2017 | 237 comments


I think expectation management is important and as you note:

> Self-teaching computer science is a long and winding road.

What does this mean in terms of years? My estimate for the not too persistent average person is, that working through (not only read once, forget) all of the books listed on that website could well take 10 years. For someone very focused maybe 5 and for one working "day and night" on it maybe shorter.

Just to give an idea: SICP, the PDF version, has already 800+ pages and many many challenging exercises to solve. That alone could take a year or more, depending on how easily it comes to a person.

That said, I often find the website to build up a huge wall against which anyone with not 100% motivation will crash. It might not be a realistic program for most people and I would rather recommend one item after another or smaller parts.


Years ago I saw someone who was starting out in a specialist forum lament that everyone else on the forum was so much further ahead than they were. A user pointed out that the type of people who spend a lot of time on specialist forums are going to be among those most dedicated to the field, and just by visiting the forum and trying to improve themselves in that domain the individual was probably better than the vast majority of the people working in that domain.

If you’re goal is to have the same amount of CS knowledge as the average person with a CS degree who’s a few years out of college, it probably wouldn’t take that much time. Extremely few - I’d say almost none - CS graduates have gone through the entirety of SICP. You can read the other comment where someone said they went through it after getting a degree in computer engineering, and a lot of the concepts in it being new to them.

How long will this take? If you’re focused on learning as much as you can, it’s a never ending journey. But you probably won’t find a use for most of the knowledge (more and more so as you go along), so it’s going to be a hobby for the most part. If you’re just trying to cover the topics that people say you need to know (IE, the site gives understanding recursion as a reason to go through SICP), I imagine you could learn most of them surprisingly quickly.


I expect the "not too persistent average person" would make zero progress, as my experience is that the average person learns very little unless forced to do so.

For SICP, I read through the year after finishing my undergraduate Computer Engineering degree. I had a decent background, but a lot of the concepts in SICP were new. I loved the book and got through it in a few months of train rides, doing most of the exercises in my head. I feel that was sufficient for me, but I also don't think I'm in any way the "average person" when it comes to this domain.


> What does this mean in terms of years? My estimate for the not too persistent average person is, that working through (not only read once, forget) all of the books listed on that website could well take 10 years. For someone very focused maybe 5 and for one working "day and night" on it maybe shorter.

College courses don't go through books from start to finish. The instructor determines what's appropriate and what's left to the reader (and these books can be picked up many years later when someone recognize a gap in knowledge that's covered).

However, what's missing from these books are group assignments and mentoring from a proper instructor.

> Just to give an idea: SICP, the PDF version, has already 800+ pages and many many challenging exercises to solve. That alone could take a year or more, depending on how easily it comes to a person.

You aren't supposed to go through the whole book, especially for an intro class using SICP.


As a long time self learner the single hardest part is where to draw the line between conpletionism/ just good enough. College has this built in because an instructor will teach and test the most important parts.

Alone you always worry if you skip something it will come back later. Math is the worst- trying to complete a textbook could easily take years.


I went through most of the books listed and did the exercises. This happened over the span of 6ish years but I was not always consistent.

Timing is really hard to nail down because your strength as a programmer and engineer really come into play. SICP, for example, took me about a month of putting in a few hours a day. As it turned out my professional experience had given me significant experience with many of the concepts involved.

Conversely, for Computer Networking: A Top-Down Approach it took me 6+ months because I'd never had meaningful experience with networks outside of browser dev tools and was not very good at systems level stuff.


Probably off topic

Is there a good recommendation for teens who're just getting the programming bug?

My son's getting hooked but their curriculum is terrible (think Excel or word )...


I recommend taking a look at Processing: https://processing.org

When I was young, generating visual things was my gateway-drug to programming. With all the tooling, frameworks, workflows, concepts, etc. that you have to learn today in order to do even simple things, programming can become pretty overwhelming to someone who is just starting out. Processing is like a sandbox that is simple, but still keeps you close to the metal and provides a fun and liberating environment to grow your skills.

It may not be for everyone, which also depends on what your son is interested in building, but creative/artistic expression through code is something that I believe everyone should experience at some point.

There are many great learning resources for Processing that cover the whole spectrum from very easy stuff to more advanced projects that involve physics simulation, fractals, 3D graphics, etc. I especially recommend the video lectures by Daniel Shiffman, who teaches even advanced topics in a fun and engaging way: https://processing.org/tutorials


FreeCodeCamp is good. Practical tutorials to build real things all the way up to deep theory.


freeCodeCamp the website with its main curriculum is really good.

freeCodeCamp, the YT channel and republisher isn’t that good.

They hoarde all kinds of stuff from other people on YT, and not all of the courses have good quality. I have seen some awful explanation/teaching in some videos on the fCC YT channel.


I can also recommend Daniel Shiffman. His Youtube channel has tutorial series on both Java and JS bases Processing.

https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw


Echoing this. Teach Yourself CS is the best self-study resource available.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: