[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)