TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Path to a free, self-taught education in Computer Science

691 pointsby netfortiusover 2 years ago

34 comments

ipnonover 2 years ago
Having finished a CS undergrad and followed the OSSU curriculum for some years I can confidently recommend <a href="https:&#x2F;&#x2F;teachyourselfcs.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;teachyourselfcs.com&#x2F;</a> 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 <a href="https:&#x2F;&#x2F;teachyourselfcs.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;teachyourselfcs.com&#x2F;</a> and refer to OSSU if they find the former lacking in some measure.<p>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.
评论 #34674354 未加载
评论 #34674646 未加载
评论 #34675852 未加载
评论 #34677859 未加载
评论 #34675642 未加载
monero-xmrover 2 years ago
100% possible to be a self-taught software engineer. I have hired many over the years. The hardest part is breaking into the industry, but once you have some experience and references the degree doesn’t matter for many high paying companies (although FAANG and academia might disagree).<p>When I interview ICs it is a very free flowing conversation. When there is a lull I will jump to a new subject. I will just start asking things and keep going deeper until I exhaust your knowledge.<p>“What is the command for listing directories in a terminal? Name a flag you can use - what does it do? How do flags actually work anyway? Do you know any libraries for CLI parameter processing? Ever heard of argc and argv? How do you think those variables are mapped into memory of the forked process?”<p>I go on and on and on. If you just become obsessed with computers and software engineering and put in some years of effort you can beat what school charges you for. Plenty of MIT and Brown and Harvard grads don’t know fuck all about software development. Credentials are a signal for sure but that is all they are.
评论 #34674464 未加载
评论 #34674317 未加载
评论 #34674439 未加载
评论 #34675157 未加载
评论 #34674917 未加载
评论 #34688492 未加载
评论 #34675601 未加载
necessaryover 2 years ago
Did anyone else cruise through college with their programming experience developed as a kid, only to come out with an excellent knowledge of practical computer programming (i.e., learned several languages, touched most of the frameworks, able to deploy full-stack apps alone) but a complete lack of mathematical and computer science knowledge? And if so, did you ever go back and re-learn some of these fundamentals and find use in it? I&#x27;m in this situation now, and while I feel confident in my ability to do my job, I feel jealous of peers who are able to solve complex algorithmic problems, or understand mathematical problem domains with ease (e.g., machine learning)
评论 #34681493 未加载
评论 #34682067 未加载
评论 #34682031 未加载
评论 #34681446 未加载
评论 #34681469 未加载
评论 #34683092 未加载
评论 #34682754 未加载
评论 #34683274 未加载
teekertover 2 years ago
I was educated as a biologist but I am now a full time software dev (perhaps a light version, I just do Python&#x2F;bash) with some science elements. I was able to make this switch because I have always (since the 2.4 kernel days) enjoyed Linux and self-hosting as much as possible, including email, which I, as 99% gave up on later again).<p>It basically made me a sys-admin, many people around me do docker these days, few can diagnose issues with Docker itself, route traffic around with valid certs, open a shell inside a container to really see what&#x27;s happening. But I just feel at home inside Linux. I know my way around &#x2F;etc, I know how I would do things and that is how things often are. It helps me a lot in my daily job. I feel like the whole stack is an open book to me. I still listen to a lot of Linux podcasts (like most Jupiter broadcasting shows), that also helped me a lot, also keeps me informed on recent tech.<p>I&#x27;m really getting paid for my hobby nowadays.
评论 #34675912 未加载
评论 #34681762 未加载
评论 #34675847 未加载
ilakshover 2 years ago
These types of sites are great. BUT. The concept hasn&#x27;t properly evolved since the 1970s-80s when I assume it started to become pretty big.<p>I think the reason 99% of people study computer science is to get a computer programming job. Almost all programming jobs are actually software engineering jobs these days.<p>So I believe that at least one third of a degree program like this should actually be software engineering.<p>And the most important part of software engineering is the outer loop with clients or end users (or some stakeholders). So they should train on multiple project iterations with some external group as customers.<p>So the interaction with customers, defining requirements, the basic looping of iterations and maintaining software and evolving designs and technical debt, somewhat larger codebases that make modules&#x2F;components&#x2F;classes etc. more important. A lot of that should be integrated and probably even replace some of the lower-level stuff that would have been much more relevant in the 1980s for most application programmers.<p>It should be multiple projects that get evolved over the entire course.<p>Also another thing, a key tool to add to an education like this would have been active Google searching and learning how to do that, which should be at least a small part of the curriculum. Since the last few months, another key tool at least as important is ChatGPT.<p>The technology landscape changes rapidly. Education should keep up. Especially if its self-education, no reason to be stuck in the late 80s or early 90s.
评论 #34674954 未加载
评论 #34675314 未加载
评论 #34675903 未加载
评论 #34681587 未加载
评论 #34674812 未加载
评论 #34675203 未加载
评论 #34684318 未加载
abdullahkhalidsover 2 years ago
Can someone point out where the <i>science</i> in all this is? At best, there are some courses in algorithms in the &#x27;Core Theory&#x27; and others in the &#x27;Advanced Theory&#x27; section, with a random spattering of in other sections.<p>Computer Science would be computational theory, complexity theory, a proof based cryptography course, the mathematics of computer geometry&#x2F;machine learning type stuff.<p>About 80% of the courses here are software engineering courses - about using computers to build things. The quote &#x27;computer science is as much about computers as astronomy is about telescopes&#x27;, comes to mind.<p>Just call it &#x27;a self-taught education in Software Engineering&#x27;.
评论 #34675441 未加载
评论 #34676857 未加载
评论 #34675261 未加载
评论 #34677045 未加载
评论 #34674652 未加载
评论 #34683116 未加载
评论 #34688648 未加载
评论 #34674880 未加载
评论 #34674624 未加载
ZephyrBluover 2 years ago
A large part of me feels like this is an oxymoron. Someone who is capable of self-teaching this content is probably not going to need such a structured program. At best, this would function as an aspirational index for them to refer to.<p>This also covers a lot of things you should probably not be studying as self-taught dev, since there is a much larger opportunity cost because you are not at university. I like calculus and maths, but that knowledge is low value for a developer.<p>Once you&#x27;ve bootstrapped a basic understanding of programming and CS, I think you should be building stuff 80% and reading up on new things that catch your eye 20% until you hit diminishing returns. Reading about things like SOLID, DRY, algorithms, OOP, etc is just not going to stick. You need to build stuff and start getting an intuition for the concepts.<p>Immersing yourself in community discourse is also very underrated. You will pick up so much jargon and be exposed to lots of different concepts and tools just by hanging out where other programmers talk, like on HN, Twitter and Reddit.
评论 #34683470 未加载
biqlover 2 years ago
Often unnoticed but very important part of the traditional education is having the peer group to compare yourself too. The desire to copy and compare each other kicks in and now it&#x27;s no longer just about getting grades but rather how do you relate to each other in your common path. It would be cool if this was somehow replicated in MOOCs.
评论 #34674810 未加载
评论 #34679444 未加载
评论 #34674989 未加载
dangover 2 years ago
Related:<p><i>OSSU: Path to a free, self-taught education in computer science</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=27744255" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=27744255</a> - July 2021 (149 comments)<p><i>OSSU: A path to a free self-taught education in computer science</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21062799" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=21062799</a> - Sept 2019 (172 comments)<p><i>Path to a free self-taught education in Computer Science</i> - <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=16035839" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=16035839</a> - Dec 2017 (66 comments)
mathieuhover 2 years ago
I don&#x27;t think the point of universities and degrees these days is to learn anything. It&#x27;s just something you have to do in order to get a good job. That was certainly my experience. I went to a so-called top university, and I didn&#x27;t feel like I learnt anything remotely relevant to what I do today. All I got at the end of it was some letters after my name.
评论 #34675381 未加载
评论 #34674670 未加载
Joel_Mckayover 2 years ago
A BSc or MSc in STEM is all 99.997% of immigration and Human Resources people care about. Thus, if your goal is to augment your existing degree, than a self-directed or short certificate program is fine. However, if you want a commercial career in CS without a upper-level degree, than you may as well waste your time doing something you enjoy instead.<p>There is a huge gap between the theoretical and practical aspects of CS in both the academic and professional fields. Generally, most college programs have lab driven smaller classes, and produce better coders (ready to go in a few months). However, university level programs tend to produce primarily theorists from thousands of students (an additional 1 to 2 years of training is usually needed for a commercial setting).<p>I often recommend plumbing, as it allows folks to afford to do a postdoc. =)
评论 #34674689 未加载
评论 #34675153 未加载
314over 2 years ago
As a former CS professor with some experience of curriculum design: looks quite reasonable. Personally I would have moved some of the material on compilers and architecture into the earlier part of the course (instead of putting them in the advanced section) but balancing content distribution against time is tricky.<p>The selection of areas and materials is broad enough to teach a reasonable chunk of CS. The individual course quality looks good from a quick skim.
SunghoYahngover 2 years ago
Looking through the links, I noticed most of the course was video, so I immediately turned it off. Compared to text, videos are an inefficient learning tool, and I think a lot of people aren&#x27;t aware of that. Honestly, I hate video learning materials. Though it&#x27;s better than going to a classroom.
gnicholasover 2 years ago
Given the trajectory that AI is taking in terms of being a very helpful code assistant, what type of CS education would be ideal for current elementary school kids? Sure, some will want to go all the way and be programming the AI; but for the rest, it would probably make sense to be able to use the tools in the same way that today&#x27;s &quot;tech savvy&quot; can accomplish 10x as much as someone who isn&#x27;t familiar with computers. What parts of computer programming will be necessary, and which parts can be summarized or jettisoned?<p>I ask this question as a mostly non-technical person, wondering what skills it makes sense to develop in my children, so they can &quot;skate to where the puck is going&quot;, so to speak.
评论 #34674451 未加载
评论 #34674923 未加载
评论 #34674525 未加载
revskillover 2 years ago
It&#x27;s a missed opportunity to push &quot;Projects&quot; at the end of all kinds of course. Let&#x27;s turn table around. Let&#x27;s teach on how to build complex projects with its companion theory, instead of just trying your best to explain the theory first.
评论 #34674274 未加载
asicspover 2 years ago
See also:<p>* What every computer science major should know (<a href="https:&#x2F;&#x2F;matt.might.net&#x2F;articles&#x2F;what-cs-majors-should-know&#x2F;" rel="nofollow">https:&#x2F;&#x2F;matt.might.net&#x2F;articles&#x2F;what-cs-majors-should-know&#x2F;</a>)<p>* learn-anything mind map (<a href="https:&#x2F;&#x2F;learn-anything.xyz&#x2F;computer-science" rel="nofollow">https:&#x2F;&#x2F;learn-anything.xyz&#x2F;computer-science</a>)
ranting-mothover 2 years ago
Does anyone have recommendations for similar material in either Mechanical Engineering or Electronic Engineering?
评论 #34677000 未加载
评论 #34676207 未加载
SergeAxover 2 years ago
Note there is a very observable difference between computer science and software engineering. In Advanced Programming they offer Haskel, Scala and Prolog. While those languages are fun to learn and use for personal purposes, there&#x27;s effectively zero commercial space application for them.
评论 #34679867 未加载
评论 #34681275 未加载
评论 #34677712 未加载
kirillbobyrevover 2 years ago
I&#x27;ve seen this before and there are great courses, but most of them cover the basics.<p>What I tried to find for myself is a bunch of in-depth courses that cover the areas where I&#x27;m not as comfortable. I&#x27;ve started collecting some courses (there were especially many in the COVID era simply because the universities recorded the courses anyway and only needed to upload them), books and papers. I didn&#x27;t aim to get a comprehensive set of resources covering everything or having some specific features, I simply gathered what I thought is interesting for myself:<p><a href="https:&#x2F;&#x2F;github.com&#x2F;kirillbobyrev&#x2F;computer-science-resources">https:&#x2F;&#x2F;github.com&#x2F;kirillbobyrev&#x2F;computer-science-resources</a>
juliusover 2 years ago
Computer Science?<p>If you just want a career in making computer software. Build something. Then do it again. Google all the stuff you need to build your current thing. After a few month it will be obvious to you that you can build software. Then talk to companies about junior positions. Tell them you are self-taught and show them the stuff you have built already.<p>Best to talk to a company (usually small companies are easier), where you are allowed to talk to a programmer early on. The fact that you learned everything by yourself means they do not have to hold your hand all the time. Hand-holding time is the most important consideration for me, when taking on junior devs.
g42gregoryover 2 years ago
I feel that CMU&#x27;s 15-213 Introduction to Computer Systems [1] should absolutely be on the list. It&#x27;s a mandatory class at CMU that everyone, who gets remotely near CS curriculum, must take. I feel it&#x27;s completely justified. The lucky CMU students were able to take a version of this class since 1998.<p>[1] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4CpHpFu_KYM&amp;list=PLbY-cFJNzq7z_tQGq-rxtq_n2QQDf5vnM&amp;index=2">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4CpHpFu_KYM&amp;list=PLbY-cFJNzq...</a>
sailorganymedeover 2 years ago
I am doing the Math version of this currently to catch up on the gaps that my CS education missed out on. If you do plan on doing this, I cannot stress how important it is to manage expectations and be consistent with the workload. There is no pressure here and you might not even need like, 80% of what&#x27;s being taught on your course but you are essentially keeping yourself active. It&#x27;s like a gym except for your brain.
goyover 2 years ago
The problem I&#x27;ve faced with self-learning CS have never been a lack of resource. Skills plateauing for almost a year. I just have troubles keeping on track. Mentorship or some kind of support will be more helpful ...
评论 #34683188 未加载
cod1rover 2 years ago
this is a good resource but also don&#x27;t forget to apply these by thinking and building out projects. If you don&#x27;t use the knowledge, there&#x27;s a high chance you&#x27;ll lose the knowledge.
ravagatover 2 years ago
Nice, I&#x27;m drafting my similar syllabus for publication on my github. I love the fact that there are more open pathways to achieving a education like this. Thanks for the share!
mrleinadover 2 years ago
This looks really good, though the Software Engineering course part seems a bit lacking. I think there should be a more comprehensive one on patterns and software design.
PixelForgover 2 years ago
There&#x27;s also <a href="https:&#x2F;&#x2F;roadmap.sh&#x2F;computer-science" rel="nofollow">https:&#x2F;&#x2F;roadmap.sh&#x2F;computer-science</a>
rahmaniaccover 2 years ago
This is great. I am have hired many many engineers over many years, and I have not seen a significant difference in the quality of engineers who had a formal CS degree vs. another quantitative degree (physics, math etc.). I have noticed some differences in engineers who have gone through bootcamps, but they are usually great at getting things done, so it has never mattered.<p>Also curious if there is a list somewhere out there for similar self-taught path for other subjects?
评论 #34677555 未加载
评论 #34677256 未加载
WaffleIronMakerover 2 years ago
In the same vein, I also recommend <a href="https:&#x2F;&#x2F;roadmap.sh" rel="nofollow">https:&#x2F;&#x2F;roadmap.sh</a>
nashashmiover 2 years ago
Now there needs to be a path towards self-certification. Something like a standardized exam. Or 24 hour cs project
bugbuddyover 2 years ago
This is a good list but I want to know how they came up with duration and effort numbers. It seems like hand waving.
rep_movsdover 2 years ago
Im not sure you can learn some fundamental CS concepts in python
hnthrowaway0328over 2 years ago
I have devised a plan for a specific group of people (like me):<p>Group Characteristics:<p>- Has a full-time job and a family with kid(s): Basically means only 1-2 hours everyday, maybe a little more when workload is light<p>- Not super smart (probably can identify myself as median IQ at best)<p>- Did not go through a solid CS education (I came from MATH in a mediocre school)<p>- Managed to grab a developer gig by luck and self-development (for me it&#x27;s mostly luck)<p>- Want to have the deepest understanding of computers and computing as possible (I just realized that computers and computing are two things, one is more about hardware and the other is more about MATH)<p>Issues identified:<p>So we probably still want to get the best education from MIT&#x2F;Berkeley&#x2F;etc. but the problem is:<p>- The courses are too tough for us<p>- We don&#x27;t really have the mental reservoir to consume difficult topics everyday, so that means maybe a few hours of study may push me away from studying for the next day<p>- Contrary to the second point, we do need to study the material as often as possible to retain knowledge learned<p>My plan:<p>- Browse through the list of MIT&#x2F;Berkeley&#x2F;CMU&#x2F;etc. classes and figure out a list of courses. I want to study reverse engineering so my list:<p><pre><code> - Introductory to programming (I want to skip this one but local university doesn&#x27;t allow me, see below) - Computer Architecture - Data Structure and Algorithms - Theory of Computing (basically pre-requisite for compiler theory) - Operating System - Compiler Theory </code></pre> - I then registered in local university. It&#x27;s a mediocre one but it fits in the bill of giving me a general understanding of the topics<p><pre><code> - The lab&#x2F;assignment is really easy, like in OS class it doesn&#x27;t even touch anything about writing functionalities for a student OS - The exams are annoying, mostly about memorizing things, but since I don&#x27;t care about score I just get by - I have to take a few extra pre-requisite courses such as Introductory to Programming and Discrete Math but I&#x27;m fine, good to pump to GPA in case I fuck up something in the future. I want to have an average of B </code></pre> - I&#x27;m going to take one course per semester and study the corresponding MIT&#x2F;Berkerly&#x2F;CMU course in the NEXT semester, so basically I always have two classes going on from the second semester. The workload is more manageable and more importantly I already know something before taking the courses of tougher tier schools.<p>I&#x27;m now on Data Structure and Algorithm so next semester I&#x27;m going to take Theory of Computing in local school + Algorithm in tougher tier school. I hope it can ease my way into the topics so that I don&#x27;t burnout quickly.
bleuuuuover 2 years ago
just learn everything. pick a problem or project and fill in the gaps.