Hacker News new | past | comments | ask | show | jobs | submit login
Teach Yourself Computer Science (2020) (teachyourselfcs.com)
302 points by truly 54 days ago | hide | past | favorite | 52 comments

Past related threads:

Ask HN: Thoughts on teachyourselfcs.com? - https://news.ycombinator.com/item?id=23731364 - July 2020 (1 comment)

Teach Yourself Computer Science - https://news.ycombinator.com/item?id=23588896 - June 2020 (265 comments)

Teach Yourself CS Updated - https://news.ycombinator.com/item?id=23054988 - May 2020 (1 comment)

Teach Yourself Computer Science (2020 update) - https://news.ycombinator.com/item?id=23045295 - May 2020 (1 comment)

Teach Yourself Computer Science - https://news.ycombinator.com/item?id=17581589 - July 2018 (81 comments)

Teach yourself computer science - https://news.ycombinator.com/item?id=17332944 - June 2018 (1 comment)

Teach Yourself Computer Science - https://news.ycombinator.com/item?id=13862284 - March 2017 (237 comments)

Love this website, and love how there are more and more resources for auto-didacts.

For anyone who wants to learn how to draw, check out drawabox: https://www.drawabox.com. The guy started out just wanted to share the basics and now I think he makes a living through that site.

EDIT: I should also add that I know drawabox is off topic, but it is IMO a great example of where education might be going. Carefully constructed resources and advice for self-motivated learners, and a patreon to support it. The people at teachyourselfcs.com can learn from this site.

As someone who always struggled to draw anything, even stick figures, this site just seems like a new revelation to me.

Google "Darren Rousar The Sight Size Cast". The two approaches to drawing are constructive and observational. Internet guides like draw a box largely neglect the observational side.

I wonder if there is something like this to teach computer graphics too.

I get a “you should go back-this site looks like it’s impersonating drawbox” message from that link.

Try without the www (https://drawabox.com). The certificate is not a wildcard one and only include the naked domain.

yeah, www isn't redirecting. the link is https://drawabox.com/

I'm a self-taught programmer and I've been looking at this curriculum longingly for a while now. I've been working up the courage to quit a cushy but unfulfilling job to study CS full-time (also math and physics, but that's just for fun).

I fell in love with programming after I started working, and have spent the last 7 years automating everything I can in my job. I'm confident in my ability to solve problems, but I'm missing a solid understanding of the fundamentals.

I already have a BS in Materials Engineering, and I have mixed feelings about returning to university. Tuition has doubled since I graduated, and I'm perfectly capable of teaching myself. The authors of teachyourselfcs.com have some strong opinions on CS masters degrees, though I would consider it if I found a topic that really called out to me AFTER I had built those fundamentals.

I have plenty of savings, but I'm worried that my effort will be wasted if it doesn't come with an exclusive piece of paper at the end. Will it be an obstacle, or am I worried over nothing?

Maybe do the Gerogia Tech Online Master's in Computer Science? If you're considering studying full time the fees ($10,000) are trivial compared to the foregone earnings. You don't even need to finish before you start interviewing.


Alternately go to the Recurse Center. They exist for people like you and make their money by helping you get a job afterwards.


Or you could "just" learn in public and chronicle it. Make a Twitch channel or livestream on YouTube. Do enough that people you don't know personally will vouch for you for a FAANG interview. Do three months of Leetcode and go to a few meetups and someone will do that.

It should be pointed out that joining Georgia Tech's OMSCS is not trivial. It's a limited-enrollment, fully accredited master's degree program. You need strong test results and convincing letters of recommendation from former faculty or mentors to be admitted.

OP has an Engineering degree. He is not going to have much trouble getting admitted. GA Tech has been quite clear that the goal is to admit everyone they think can pass who has a Bachelor's degree. They're not even aiming to make a profit, just cover costs. They're kings.

I definitely got significant value out of studying CS in a structured/academic context after being self-taught; it helped a lot of concepts that I already fuzzily understood gel together. For instance, I had written little config file parsers, and even most of my own (mini) programming language, but taking a course on programming languages, studying grammars, lexers, parsers, etc. helped make everything click and feel less shaky.

I'm not sure the diploma is a huge deal, as long as you have some industry experience (sounds like you do) and can demonstrate your skills. Having some references who can vouch for you is good to have, too.

> but taking a course on programming languages, studying grammars, lexers, parsers, etc. helped make everything click and feel less shaky.

I'm currently trying to learn all of this and wish I had completed my CS degree since you have peers going through the same thing, and a professor for office hours. I find it a little difficult to get through on my own, but I hope to get far enough to participate in PL.

Check out https://craftinginterpreters.com/. I created a interpreter with the help of this book and it's been a great resource.

This is the resource recommended by teachyourselfcs.com. I guess that's encouraging.

You don't need a CS diploma but you need to know how to program. You'll get either a take home project or white board problems during the interview. If you can pass those, you aren't lazy, and you aren't a jerk you are hired.

This is not necessarily representative. Leetcode interviewing is so common now, it gatekeeps many companies.

By all means take courses. But before you quit to just take time off and self educate, read the long threads on here about what it is really like out there in tech hiring.

Be prepared not only to be good at programming, but great at tech interviewing which is not the same.

Just watch YouTube videos about how everything works too. Operating systems , compilers, data structures , modern computer systems. Look up elementinfs of computing systems or whatever has all the info u need.

It's cool that there are more of these around; I remember I just kind of went to a few universities' CS program Web sites, looked at what courses you'd take to get the major and what books they used, and went from there.

Yeah, this is pretty comparable and does a decent job aggregating what you might find by doing that.

Also helps with the kind of decision paralysis and tendency to wander off course I’ve often experienced when doing the aggregating myself.

This syllabus has been instrumental in keeping me focused over the course of a year+

Yeah, I also think that my approach might have been less obvious if I hadn't already completed a college major in a different subject.

I use this method for every subject I want to know deeply. After I have the foundational knowledge down I can create my own niche curriculum.

I think the advice to avoid an MSCS should be taken with a grain of salt, particularly if you have an undergrad degree in CS and/or already know the material on this page.

While it is true that programs are cash cows and there is both potential debt and opportunity cost, you can learn a lot if you pick the right courses, such as well-taught graduate systems courses with a serious project component.

I have often wished that software I've seen, both commercial and open source, had been written by people who had a better understanding of computer systems, especially operating systems, databases, distributed systems, etc..

Agreed. Just finished earning my masters in C.S. from Georgia Tech and well worth it. Classes were intellectually stimulating, particularly compilers, distributed systems, and algorithms.

Operating Systems and Algorithms at GT are top-notch. Some of the best in the world. That's one reason they are consistently ranked in the top 10 CS programs in the world.

The cash cow thing depends on region. Up here my MSc was effectively free.

Yeah, I'm doing UT Austin, and they charge $1k a course, for a total of 10 courses - to me that is pretty cheap.

It's all through EdX, so still a cash cow for them, but reasonable for the student.

Not sure you understood already, but I think the GP means actually at no cost.

Timeless quote from Bodik, from the article:

"Don’t be a boilerplate programmer. Instead, build tools for users and other programmers. Take historical note of textile and steel industries: do you want to build machines and tools, or do you want to operate those machines?"

gReaT resource.

A good course/resource to go on a full and serious dive to CS:


I think the advice to avoid an MSCS should be taken with a grain of salt.

You can learn a lot in a well-taught graduate systems course with a serious project component.

Apologies for the duplicate post - sometimes either the reply button doesn't seem to work (post doesn't show up) or I end up double-clicking it rather than single-clicking. There seems to be a time limit on deletion and editing unfortunately.

Eerie. I was just browsing this site minutes ago. Good all-around guide but I wonder if it could use an update to include things like machine learning, cryptography, or safety-critical software.

They respond to that update suggestion in their FAQ. Machine learning in particular is just not something they belief every type 1 engineer needs to know.

Ive been teaching at a top bootcamp for a while now and really enjoying it, in large part because we get a lot of lateral freedom to spend time going deeper on computer science topics and get a lot of excuses to do so with our current CS-heavy curriculum.

I just wanted to say this is exactly the kind of welcoming, positive resource that made the software industry feel so welcoming when I came back to it after a decade long hiatus. Its not perfect but it really seems like its never been so easy to find the resources you need to become not just a proficient developer but a fully engaged software engineer.

I'll be forwarding this to all my past, present and future graduates. Thank you for posting and for all the work that went into assembling this. :^)

Also if anyone has any other good resources for helping to shape new minds in the industry and make responsible / capable engineers please let me know!

I did my undergrad in Economics but I want to transition to software engineering. But idk what stack to choose or what projects to work on. I also can't afford to leave my job to do a bootcamp either. So I'm stuck and it sucks.

Perhaps data science and analysis? Check out https://github.com/ossu/data-science and https://datacarpentry.org/lessons/

There's a discord group for this which isn't very active https://jointeachyourselfcs.carrd.co/ Maybe we could make it active :)

Is this blocked in India? I can’t access

The website has been blocked as per order of Ministry of Electronics and Information Technology under IT Act, 2000.

Use https://archive.org/web/ to access the website. I'm in India too and it's very weird that they've blocked this website. I refer to the article a lot so thankfully I had a PDF copy.

Is there any place where you can discuss the textbook problems in this course?

There's a discord group https://jointeachyourselfcs.carrd.co/

Are there any good similar sites for learning botanics?

I would argue that if you really understand binary search, then you understand half of CS Theory. You can apply that to DP, graphs, networks, etc. and solve most problems efficiently.

Computer science is overrated.

Computer engineering on the other hand... much more practical ;)

I'm seeing this belief more and more among engineers these days. It's not even an admission of ignorance, but an explicit position they hold. "You don't need to know the chemical composition of the patty to flip burgers," one told me. All I was doing was trying to explain that he could be way more than a burger flipper if he learned more deeply.

If you ask me, the word computer scientist mostly applies to people in academia, and those spend most of their time teaching the same thing every year, or trying to get their papers accepted, and fighting workplace politics instead of doing something practical.

Knowing what something is isn't science, it's just being educated. Figuring out a new type of semiconductor or new sorting algorithm is science, and even that sometimes isn't. Something that I threw together one night that hasn't been peer reviewed isn't science, it's just engineering.

Obligatory SMBC: https://www.smbc-comics.com/comic/2011-02-17

> trying to get their papers accepted

I think that to do that one has to spend (most of their) time writing those papers, and doing the research contained in them.

good luck w/ that =)

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