[HN Gopher] The Open Source Computer Science Degree
       ___________________________________________________________________
        
       The Open Source Computer Science Degree
        
       Author : cbracketdash
       Score  : 91 points
       Date   : 2024-08-15 23:23 UTC (23 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | neofrommatrix wrote:
       | Question: is a CS degree complete without compilers? Or
       | Networking and Distributed Systems?
        
         | pxc wrote:
         | 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,
         | Godel'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 wrote:
         | 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.
        
         | BadHumans wrote:
         | 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.
        
           | throwaway2016a wrote:
           | 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.
        
         | jcranmer wrote:
         | 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.
        
           | shagie wrote:
           | 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.
        
         | shakna wrote:
         | My Bachelor in Computer Science didn't include either. I went
         | off and studied those on my own. So... Certainly.
        
           | eddd-ddde wrote:
           | Definitely, my understanding of writing code couldn't be
           | called good until I understood how compilers read it.
        
             | mamonster wrote:
             | 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.
        
         | DonHopkins wrote:
         | "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 wrote:
           | A degree isn't compete until granted tenure.
        
         | kyawzazaw wrote:
         | a lot of schools don't offer this or require this. many people
         | graduate without either
        
       | chris_wot wrote:
       | Try also:
       | 
       | + https://github.com/ossu/computer-science
       | 
       | + https://github.com/Developer-Y/cs-video-courses
       | 
       | + https://github.com/PKUFlyingPig/Self-learning-Computer-Scien...
       | 
       | + https://gist.github.com/Amir22010/e66e8f51fecf415a2952b6470d...
        
       | beyondCritics wrote:
       | Is there something else known for other faculties, like math,
       | physics, finance, ...?
        
         | randmeerkat wrote:
         | > 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...
        
         | tzs wrote:
         | 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
        
       | chasd00 wrote:
       | 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.
        
       | upghost wrote:
       | 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/
        
         | throwaway2016a wrote:
         | 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.
        
       | malcolmgreaves wrote:
       | 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 :-/
        
       | ketzu wrote:
       | Are the links working for other people? Most of the linked
       | resources do not exist for me.
        
         | Jtsummers wrote:
         | It's unmaintained. See chris_wot's comment with better and
         | maintained resources.
         | 
         | https://news.ycombinator.com/item?id=41266438
        
       | throwaway2016a wrote:
       | 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.
        
         | RandomThoughts3 wrote:
         | 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.
        
           | Suppafly wrote:
           | 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.
        
           | throwaway2016a wrote:
           | > 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).
        
         | jacoblambda wrote:
         | 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)
        
           | throwaway2016a wrote:
           | 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.
        
         | kyawzazaw wrote:
         | I assure all of these are optional or not even offered
        
       | jgwil2 wrote:
       | Similar idea: https://teachyourselfcs.com/
        
       | mdaniel wrote:
       | > 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 wrote:
         | 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.
        
           | mdaniel wrote:
           | 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...
        
             | sunjieming wrote:
             | 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
        
               | jandrewrogers wrote:
               | > 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.
        
           | bluedino wrote:
           | > 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.
        
           | Suppafly wrote:
           | >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.
        
         | Suppafly wrote:
         | >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.
        
       | hayd wrote:
       | I hope for a future where we can stop teaching kids Java
       | 
       | Python or Rust seem much friendlier.
        
       ___________________________________________________________________
       (page generated 2024-08-16 23:01 UTC)