Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The Open Source Computer Science Degree (github.com/forrestknight)
113 points by cbracketdash 11 months ago | hide | past | favorite | 49 comments


> Computer Science Degree

I think "degree" should mean a degree - if they want to say "computer science curriculum" that's fine, or "degree requirements" or something

Now, don't get me wrong: I actually would really enjoy if there was such a thing as "degree as a service," so one self-studies via Khan Academy or MIT Open Courseware or whatever and then shows up to (e.g.) MIT and sits for the exams to satisfy mastery over the subjects

I know there's politics around "brand dilution" or whatever, but I don't see how it's any different from sitting for the AWS Certifications in that way. AWS doesn't have their brand diluted if you self-study and the pass the exam


I've heard it put this way: Why would Stanford reject 95% of the people who want to pay them full tuition for the education?

I think Peter Thiel's answer is correct - The value of the education is similar to a night club's. It's about how long the line is outside of the club that determines how desirable it is.

It's not only the knowledge that people are paying for. It's the branding and the filtering that provides most of the value. So Stanford/MIT granting degrees to anyone that studies open source material will never happen because that dillution destroys most of the value proposition

Edit: Another point: what other business would not seek to dramatically increase supply of their product if they could only sell their extremely expensive product to <5% of the willing buyers? Any other business would invest significantly in increasing their production capacity. But with universities if they increase their capacity then the actual value they provide diminishes. Stanford is no longer Stanford if they have 900k students

Edit 2: My hope is that a university without enormous branding/filtering risk (Like WGU) could implement a model like this. Or a tech co could spin up a small attached accredited university that exclusively focuses on granting degrees to async learners. Like Amazon expanding their certifications they provide to granting an actual BS in CS if the student passes a bunch of exams.


I hear you, and maybe I shouldn't have used such a big name as an example, since if one wants a Rolex it's usually not to tell time. That's why I opened with degree as a service - some place with the financial incentive not to be a degree mill (and thus turn into University of Phoenix-esque) but who doesn't care how long the line is to get into their exclusive club, rather they care about allowing more folks to put "yes, I have BSCS or MSCS" on their resume without having to go through the traditional channels to get one

I applaud my alma mater for their MSCS effort, which in my mind elevates their prestige not dilutes it: https://www.gatech.edu/academics/degrees/masters/computer-sc...


Do you have a MSCS from gatech? If so did you like the program?


No, and sorry if I gave that impression. Mine was just BSCS and then I actually got about half way though the MSCS at Drexel because they were one of the few institutions that offered 100% remote MSCS at the time. Then, I had a change of circumstance and didn't finish it. I was interested in the GT MSCS but didn't pursue it for the same reason I didn't finish the Drexel one: it just didn't feel like the ROI for my situation was worth it


Yeah, someone like that would be perfect. I personally am self taught and didn't finish my CS degree and every few years I look around for an option like this. I'm an experienced senior dev and the opportunity cost of finishing my degree is always just way too high relative to any value it would actually provide for my career. I wish something like this existed.

The degree doesn't matter in most of tech but if I ever wanted to work for the government or military I'd be automatically disqualified for not having a degree despite having the ability. The tech interview process that many people deride actually provides the opportunity to get a great tech job if you just simply know the material. It's been a huge advantage for me


> The degree doesn't matter in most of tech but if I ever wanted to work for the government or military I'd be automatically disqualified for not having a degree despite having the ability.

You do not need a degree to work for the government or military, at least not as a contractor, and almost all of the interesting work is done by contractors.


Yeah, you can still get the job, however you will hit a glass ceiling in terms of pay.


>I've heard it put this way: Why would Stanford reject 95% of the people who want to pay them full tuition for the education?

Do they though, or do a lot of people apply to big name schools hoping to have that acceptance for cachet and not actually care about attending or even have the ability to attend for financial or other reasons?

>So Stanford/MIT granting degrees to anyone that studies open source material will never happen because that dillution destroys most of the value proposition

Presumably it wouldn't happen regardless because not enough people would actually pass the exams anyway.


> Stanford is no longer Stanford if they have 900k students

Is any specific thing worth it once that many people can easily recieve it?

I remember how well-respected certain technical certifications were a long time ago, and then you had braindumps, 3-day cram courses... and they basically became useless because most of the people that had them couldn't even answer basic questions.


> people can easily recieve it?

Maybe I'm not following something, but I doubt very, very seriously that a college degree could be termed "easily" for any accredited institution. I'm open to those high value places getting all the best teachers, and unquestionably the networking opportunities are outrageous, but I still wouldn't expect someone to sleepwalk through a no-cost community college course, for example, just because it is free and not Stanford-Priced


>I think "degree" should mean a degree - if they want to say "computer science curriculum" that's fine, or "degree requirements" or something

I agree, I often think the same about 'college' or 'university', your company's internal training catalog shouldn't be called a university.


Some of this reads as: "How to learn Java in just 1.5 years!"

And notably (and related to my Java observation) there are two OOP classes here.

I like the concept but it is some key things a 4 year degree's sometimes (not saying always!) have:

- Compiler Design

- Architecture (though some of the "systems" courses get into this)

- Databases (there is a DB course in there but it says "Essentials" and it is debatable if it actually even covers that)

- AI / Machine Learning

- Networks / Distributed Systems

- Embedded Systems (less common in CS degrees but almost every CS student I know has messed with Arduinos so it's not a stretch to have a basic embedded systems course)

Also, one of the most fun parts of an undergrad can be the electives, it would be nice to see some electives added here. I took 3D Graphics Programming and Bioinformatics, which I enjoyed at lot.


Same feeling. The list is a good start but a ton is missing. I’m not American but the first 4 years of my degree had:

- a lot more maths - really a lot - what’s here doesn’t come close to covering what we did in the first year alone. For a CS degree, I would at least expect far more algebra, some graph theory, a course on optimisation and dynamic programming, some PDE and a course on numerical methods and algorithms and some formal logic (but from what I saw when I did my post-grad the amount of maths done in my country for a CS engineering degree goes further than a maths bachelor in the US so I’m extremely biased).

- Compiler and some language theory

- a course on logic programming, another on functional programming

- a course on assembly and low level programming

- a course on Networks and systems

- a course on databases architecture

- on top of a ton of physics and courses not directly oriented towards CS but required to be an engineer here.


> what’s here doesn’t come close to covering what we did in the first year alone

This varies widely by University. The Git repo matches my experience pretty well except I also had Calc II and Discrete Mathematics.

> a course on logic programming, another on functional programming

This was already in the Git repo when I looked. I think the "Programming Languages" from University of Washington Courses cover that. Specifically "Programming Languages, Part C"... though it doesn't mention Common Lisp or Scheme and uses a lot of Ruby, which is an odd choice (IMHO).


CompEng and CompSci are different degrees here, there is often some overlap, but a lot of schools, the most math you need for Comp Sci is calc 2 and stats. It also depends on the institution, some of them go hard for compilers and lower level stuff, and some of them barely touch on it or save it for their masters programs.


I had a course my CS senior year in formal languages and automata theory over 20 years ago in the US.

Graph theory wasn’t covered. We had Calc 2, Statistics, Linear Algebra, Differential Equations and Logic. Assembly, Fortran, Java, JavaScript, Standard ML, Ada and C++ were covered.


Just from personal experience but that list of yours seems closer to parts of a "Computer Engineering" curriculum than a CS curriculum. And I'd probably add on

- Digital Logic Design (basic CMOS based logic, HDLs, and basic VLSI to add on top of computer architecture)

- Real time systems (WCET analysis, scheduling, etc)


I've interviewed a lot of different people from a lot of different Universities and I agree a lot of schools treat that as part of Computer Engineering. My undergrad was also accredited as an engineering program which may have something to do with it. But with that said, I've seen a lot of CS programs that also have at least some of those courses.

Also, some schools blur CS and Electrical Engineering and for those you may take a whole other set of courses neither of us mentioned.


Yeah our computer engineering program included a lot more EE stuff I didn't mention but the CS program didn't include any of that.

Stuff like basic circuits, signal analysis, semiconductors (doping and transistor design/analysis), and for some people optionally also RF and network analysis (not that network, the one with smith charts).


I assure all of these are optional or not even offered


I've done Nand2Tetris, I think you will get far more bang for your buck in a shorter amount of time playing Turing Complete than taking that course.

https://store.steampowered.com/app/1444480/Turing_Complete/


For whatever reason there are a lot of people out there trying to dismiss games that try to be grounded in the real world. In my opinion the most interesting games are the ones that mimic reality the most, while getting all the annoying stuff out of the way.

Games like Rust have crafting recipes that downright make fun of reality. You produce complicated fire arms using the most primitive tooling imaginable. "video game logic" is kind of tiring.


I had a similar course in college... though we had to build the computer on a breadboard and it was nowhere remotely close to being able to run a GUI let alone Tetris.


Misses the mark: there’s no functional programming classes. There is an outdated class here on object oriented programming. Good idea but this whole thing is quite incomplete and really misses the mark billing itself as a CS degree. A shame :-/




Question: is a CS degree complete without compilers? Or Networking and Distributed Systems?


Absolutely!

To me, the necessary elements of a CS degree are the following:

* Discrete math in a fashion (as much a refresher in symbolic manipulation from high school algebra as anything else)

* Introduction to programming

* Introduction to computer architecture (basically nand2tetris in terms of scope)

* Data structures and algorithms

* Software design [this is usually flavored as intro to OOP, but that it be OOP isn't necessary]

After that, it's really down to a depth + breadth requirement: concentrate a certain amount of learning in a narrowish track, and also take some basic courses from other tracks. But I don't think there's any other particular course that I'd consider a graduate deficient if they didn't take that course.


Building a complier is one of those things that rolls up a number of other parts of computer science.

You need to have familiarity with both a high level and a low level language.

Creating a lexer to match tokens uses finite state automata / regular languages.

Creating a parser to match a syntax uses push down automata.

There are some complex topics built on top of simple data structures. For example, symbol table lookups with scope.

Each one of those is a semester long class by itself (well, the DFA and PDA were both in the theory of computation class for me).

My complier class tied together many of the previous classes that I had and gave me a practical understanding of it. With that, I was then able to properly understand the tools of lex and yacc, the effort they saved me and the type of errors that I would encounter.


I have spent more time than I am willing to admit going through various CS degree syllabi and very few degrees require compilers or distributed systems. Those are usually master's degree courses. Some universities will make distributed systems an elective where you can do distributed systems, databases or something else in that area.


My undergrad had those things and they are the courses that have been most helpful to me in the real world. But I generally agree, it is rare to see them outside of master's degrees but doesn't mean they shouldn't be in there.


My Bachelor in Computer Science didn't include either. I went off and studied those on my own. So... Certainly.


Definitely, my understanding of writing code couldn't be called good until I understood how compilers read it.


Do you think people need to have compiler knowledge beyond the dragon book (for like a BS/MS equivalent level of knowledge)?

I remember that it took me quite some time to go through it coming from a math background, but it definitely improved my understanding of how stuff worked, and I haven't really done more learning since then.


I guess it depends, my compiler knowledge is not that deep, but my assembly knowledge is large enough that they kinda complete each other.

Once you understand how memory actually works, how processors execute conditionals, etc it helps massively understand what your high level language might be doing in the background.


"This is a curated list of free courses from reputable universities like MIT, Stanford, and Princeton that satisfy the same requirements as an undergraduate Computer Science degree, minus general education."

Is a CS degree complete without the general education?


A degree isn't compete until granted tenure.


Yes. The general education thing is a weird American thing noone else does


Sure! Compilers was one of my favorite classes, but it was also one elective among many. There's other stuff I took here that was ommitted: courses on tbe completeness of first-order logic, Gödel's incompleteness theorem, natural language processing, graph theory, abstract algebra, numerical analysis... there's also a lot of applied/engineering math stuff in there (the latter two semesters of calculus, stats) which I took because I wanted to but was not at all required by my CS degree. Not all CS degrees look alike.


It is also mostly introductory courses. It’s equivalent to maybe 2-3 years worth of a CS degree program if you also don’t take any advanced courses or have a specialization.

Nand2tetris, for instance, is a course I like and recommend to the curious. But it is at best equivalent to a survey course in computer engineering. It’s a motivator to go deeper, but not where a college student should stop. If it were given for credit at a university it would be intended for first year students.


a lot of schools don't offer this or require this. many people graduate without either


You could trim this to Basics, Programming, and a modified version of Theory that’s a little less abstract and call it “Open Source Software Engineering”. To me that would be more efficient if the goal is to bootstrap a career path.


Are the links working for other people? Most of the linked resources do not exist for me.


It’s unmaintained. See chris_wot’s comment with better and maintained resources.

https://news.ycombinator.com/item?id=41266438


Is there something else known for other faculties, like math, physics, finance, ...?


Here are a couple lists of mathematics topics, organized be level, with suggested books for each topic/level. The second one has pretty extensive commentary on each of the books.

"How to Become a Pure Mathematician (or Statistician)" [1]

"Chicago undergraduate mathematics bibliography" [2]

[1] https://hbpms.blogspot.com/

[2] https://www.ocf.berkeley.edu/~abhishek/chicmath.htm


> Is there something else known for other faculties, like math, physics, finance, ...?

So you want to learn physics… https://www.susanjfowler.com/blog/2016/8/13/so-you-want-to-l...


I hope for a future where we can stop teaching kids Java

Python or Rust seem much friendlier.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

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

Search: