6 ms·
The Open Source Computer Science Degree
- neofrommatrix 2y agoQuestion: is a CS degree complete without compilers? Or Networking and Distributed Systems?
- shakna 2y agoMy Bachelor in Computer Science didn't include either. I went off and studied those on my own. So... Certainly.
- eddd-ddde 2y agoDefinitely, my understanding of writing code couldn't be called good until I understood how compilers read it.
- mamonster 2y agoDo 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.
- eddd-ddde 2y agoI 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.
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]
- pxc 2y agoSure! 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.
- Jtsummers 2y agoIt 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.
- BadHumans 2y agoI 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.
- throwaway2016a 2y agoMy 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.
- jcranmer 2y agoAbsolutely! 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.
- shagie 2y agoBuilding 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.
- DonHopkins 2y ago"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?
- randomdata 2y agoA degree isn't compete until granted tenure.
- 3836293648 2y agoYes. The general education thing is a weird American thing noone else does
- kyawzazaw 2y agoa lot of schools don't offer this or require this. many people graduate without either
- chris_wot 2y agoTry also: + https://github.com/ossu/computer-science https://github.com/ossu/computer-science + https://github.com/Developer-Y/cs-video-courses https://github.com/Developer-Y/cs-video-courses + https://github.com/PKUFlyingPig/Self-learning-Computer-Science https://github.com/PKUFlyingPig/Self-learning-Computer-Scien... + https://gist.github.com/Amir22010/e66e8f51fecf415a2952b6470d8cf486 https://gist.github.com/Amir22010/e66e8f51fecf415a2952b6470d...
- beyondCritics 2y agoIs there something else known for other faculties, like math, physics, finance, ...?
- randmeerkat 2y ago> 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-learn-physics https://www.susanjfowler.com/blog/2016/8/13/so-you-want-to-l...
- tzs 2y agoHere 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/ https://hbpms.blogspot.com/ [2] https://www.ocf.berkeley.edu/~abhishek/chicmath.htm https://www.ocf.berkeley.edu/~abhishek/chicmath.htm
- chasd00 2y agoYou 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.
- upghost 2y agoI'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/ https://store.steampowered.com/app/1444480/Turing_Complete/
- throwaway2016a 2y agoI 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.
- imtringued 2y agoFor 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.
- malcolmgreaves 2y agoMisses 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 :-/
- ketzu 2y agoAre the links working for other people? Most of the linked resources do not exist for me.
- Jtsummers 2y agoIt’s unmaintained. See chris_wot’s comment with better and maintained resources. https://news.ycombinator.com/item?id=41266438 https://news.ycombinator.com/item?id=41266438
- throwaway2016a 2y agoSome 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.
- RandomThoughts3 2y agoSame 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.
- Suppafly 2y agoCompEng 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.
- 2y ago
- jgwil2 2y agoSimilar idea: https://teachyourselfcs.com/ https://teachyourselfcs.com/
- mdaniel 2y ago> 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
- sunjieming 2y agoI'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.
- mdaniel 2y agoI 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-science-online-degree-ms https://www.gatech.edu/academics/degrees/masters/computer-sc...
- hayd 2y agoI hope for a future where we can stop teaching kids Java Python or Rust seem much friendlier.