13 ms·
Stanford CS Curriculum 2021
- ArtWomb 5y agoGreat list! Stanford CS has been very open about putting its resources online. But the curriculum I've been increasing into lately is that offered by the Design Group. And that seems to be a carefully shrouded secret ;)
- SneakyTornado29 5y agoAny specific group(s) you are referring to?
- riffic 5y agoI assume they're referring to this: https://me.stanford.edu/groups/about-design-group https://me.stanford.edu/groups/about-design-group
- ExcavateGrandMa 5y agolearn HTML rendering before trying to teach anything :Ð
- huntermeyer 5y agoI was expecting more courses focused on databases.
- rfrey 5y agoIs this a curriculum or a complete list of classes? 88 courses over a 4 year degree sounds a bit heavy.
- Steven_Vellon 5y agoIt's a list of classes. At least the way it worked when I attended, CS students chose a particular track (Theory, AI, Systems, Graphics, HCI, etc.). The core curriculum was 3 theory classes and 3 coding classes. Each track has 2 or 3 mandatory classes (for systems it was operating systems, and either compilers or computer hardware). And on top of that there's general requirements.
- rajacombinator 5y agoYea, looks like the course catalog, not curriculum.
- tzs 5y agoList of classes. Only a subset are required for a degree. A bachelor's degree from the School of Engineering looks like it requires these CS classes [1]. • CS 103 and 109 • CS 106B or 106X • One of CS 181W, 182W, 191W, 194W, 210B, or 294W • One of CS 107 or 107 E • One of CS 110 or 111 • CS 161 • A senior project, which seems to fall under any of several course numbers • It looks like you have to pick a "track" (AI, Biocomputation, Graphics, and a few others) and take 4 or 5 classes from that track. (That is just CS classes. There are also some required math and physics classes). (I specifically said from the School of Engineering because I don't happen to know if all Stanford CS bachelor's degrees come from that. Some schools offer a degree from more than one school/college, sometimes with different requirements). [1] https://exploredegrees.stanford.edu/schoolofengineering/computerscience/#bachelortext https://exploredegrees.stanford.edu/schoolofengineering/comp...
- the_svd_doctor 5y agoundergrads takes about 5 classes per quarter, 3 quarters per year, for four year. So 60 classes, but including all the other stuff that is non CS related. So yeah, its a list, not a curriculum.
- vincentmarle 5y agoDoes anyone know which of these courses are great to learn more about system design?
- SneakyTornado29 5y agoThe courses go by a certain order after the core intro courses. For example, the 140's courses are more systems-y than say, the 150's which are theory courses. Intro core systems include 106B, 107, 110, and the newly introduced 111. Happy learning!
- shagie 5y agoI'm a adherent to the idea that nothing teaches system design except experience and having to fix your own mistakes in sufficiently large systems. In most software development courses, the student is learning how to make something (and then after that is done, its thrown away for the next homework assignment). System design is often about writing the glue between different constraints - frequently through another constrained component... and then having to live with the consequences of that design for a year or more (possibly trying to fix it). Take the "I've got a relational database here with mixed transactions and record updates and a document database there that I want to reflect the current state of an object in the relational database." And so you get to figure out how to use GoldenGate ( https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/introduction-oracle-goldengate.htm#GGCON-GUID-EF513E68-4237-4CB3-98B3-2E203A68CBD4 https://docs.oracle.com/goldengate/c1230/gg-winux/GGCON/intr... ) or Postgresql to amqp ( https://livebook.manning.com/book/rabbitmq-in-depth/chapter-10/ https://livebook.manning.com/book/rabbitmq-in-depth/chapter-... ) and then write something that consumes that and writes it into CouchDB or MongoDB (which do you chose? why?) Once you've got that working... keep it working for a year or two. That's how you learn system design.
- phist_mcgee 5y agoI think I agree with you almost fully but not quite. Systems design in the sense of 'designing systems' means that a lot of the time you are dealing with glue, but perhaps quite a bit of time is spent on the 'blueprint'. A good system design means that you can synthesise your learned knowledge with that of the body of knowledge to produce a new solution. So sure, you from experience know that a doesn't go with b, but if you include c, you can z. But sometimes you need to break things down further, to components you have haven't used, have never seen before, and only barely understand. This is where your CS first principles come in. You need a URL shortener. Should you create a hash of the url on demand when requested? Well maybe not, because you could get collisions, how about pre generating and picking them up at request time? Oh look, someone has written an article on this problem! So much of system doesign is understanding what your 'actual' problem is, and then thinking it through, looking for what others have done, and then bringing it together with your team knowledge.
- deleted 5y ago[deleted]
- truncate 5y agoI expected to have at-least one course on Distributed Systems. Great list though, particularly for AI/ML stuff.
- latenightcoding 5y agoas a self taught individual I always find it outstanding how much things they are able to pack in a CS degree and how fast people forget all this stuff after graduation. Like how many of your coworkers from top CS schools remember most of the material in their compilers, cryptography, comp bio courses? EDIT: To clarify, I'm not criticizing this approach, I think it's great to expose students to as many subfields as possible.
- paxys 5y agoIf you understand a concept well enough you can never really forget it. I did a very similar 4 year CS curriculum and a decade and a half later can still recall pathfinding algorithms, Diffie–Hellman key exchange, red black trees, big-O notation, OCaml, half vs full adders and lots more with a very brief glance at reference material.
- jakelazaroff 5y agoI think part of the point is to expose people to a breadth of sub-disciplines to help them find an area they enjoy.
- jlos 5y agoThe best parts of education is not primarily the material you remember. It's the effect on your thinking patterns as a result of studying and the familiarity with a school of thought. For example, I studied Greek before software engineering. I've forgotten quite a bit, but theres an entirely different set of thought processes I have access to while doing software engineering because of it.
- systemvoltage 5y agoI’d say the best part of education is familiarizing yourself with the domain. You may forget the details but the familiarity and know how about what a Sobel edge filter is useful the next time you encounter such a thing in professional life. Analytical thinking and pattern recognition is indeed also a key benefit of education.
- macromagnon 5y ago
- jimmyed 5y agoHow many of these courses have video lectures? It's always a delight when you find the vids.
- willjp 5y agoThank you so much for this post!! God I wish I had a CS degree, this looks like so much fun! One day, maybe...
- SneakyTornado29 5y agoEnjoy the knowledge and follow along! Most of the core and other courses are online somehow.
- phendrenad2 5y agoActually if you go looking for these courses, you won't find most of them. You won't even find equivalents. Sometimes you can find Coursera courses which are watered-down and combined versions of multiple courses, but they're usually entirely entry-level and useless.
- tester34 5y agoIt indeed looks like fun, but everything's dependent on the people that lecture you You may meet great ones or terrible ones, just like with everything.
- commandlinefan 5y ago> I wish I had a CS degree I have a CS degree (from 25 years ago), and I wish I could go take all of these classes again.
- slmjkdbtl 5y agoI love how each course has a unique web page. Do the teachers make them themselves? Almost feel like browsing their personal websites and have that sense of exploration going through them.
- rsj_hn 5y agoThis is a catalogue, not a curriculum. Students do not take 90 classes, but a selection of these together with classes outside their major.
- yelnatz 5y agoThanks for clarifying. I was like damn they require 4 graphics courses? I avoided those like a plague.
- npunt 5y agoGiven the power tech has over the daily experiences of billions and how many questions of values and ethics it is now directly confronting in society, I'm a little surprised there's just one ethics course and one law course that cover these subjects, and they're electives [1]. We all know much of the learning in engineering is on the job anyways, so the role of formal education is less about particular job skills and more about building foundations for understanding - exactly the time and place to teach ethical frameworks and other critical interfaces with society. Ten years later you may not remember the details, but at least you'll remember there's some kind of ethical framework or lesson that explains why a course of action your boss is considering might not be right or has implications they're not considering. The world needs more of this kind of awareness from CS grads. Not suggesting this be a major part of the curriculum, but just maybe we could go from 0 required courses covering this to 1 or 2. [1] https://web.stanford.edu/class/cs182/ https://web.stanford.edu/class/cs182/ and https://5harad.com/mse330/ https://5harad.com/mse330/ Yes, STS (https://sts.stanford.edu https://sts.stanford.edu) exists, but again that's elective and thus involves sacrificing opportunities to take those courses. EDIT- see epoch_100's link here about Stanford CS embedding ethics throughout the curriculum, which seems to address this concern: https://hai.stanford.edu/news/building-ethical-computational-mindset https://hai.stanford.edu/news/building-ethical-computational...
- rawtxapp 5y agoFWIW, I've never seen any value whatsoever in these ethics classes (note: I'm not saying it's not an important topic, it's extremely important). The hypotheticals and situations presented and discussed in many of them are very similar to yearly mandatory classes we have to take at FAANG (and many other workplaces I assume) and it boils down to having a checkbox that says "I'm not stupid". Real world ethics is much more subtle and difficult to teach imo. Like how do you do trade-offs around cost/societal issues/potential financial consequences and do it under pressure with your job on the line. In Canada, we have the iron ring given to engineers to remind them of their duties to society, I think that serves as a good reminder even if it's symbolic.
- npunt 5y ago
- rejectedandsad 5y agoAm I missing something, or is there supposed to be something special about the curriculum? Everyone knows the only reason to go to a top school is for the peer group/positive eugenics aspect of it.
- ASpaceCowboi 5y agoTHank youuuu!!!!!
- metahost 5y agoNo class on distributed systems?
- altilunium 5y agoThank you very much! Did you compile this by yourself?
- mauriziocalo 5y agoI believe this list was compiled by Andrej Karpathy (director of AI at Tesla). I thought it would be useful to the HN community given its high signal-to-noise ratio: 1) You can get a quick birds-eye view of the general trends / topics that are currently being taught at the Stanford CS department. and 2) You're one click away from learning more about each topic if you wish to do so, considering all of the courses listed have publicly accesible websites.
- newbie578 5y agoWould be interesting to see if someone could make a one-year bootcamp from this classes (not all of them, but cherry picked) and what the result graduates would look like.
- quonn 5y agohttps://norvig.com/21-days.html https://norvig.com/21-days.html
- sdevonoes 5y agoLooks really good. I still remember the curriculum of my CS degree in Europe: - first year: Mathematics I, Mathematics II, Mathematics III, Electronics I, Electronics II, Digital Circuits, Statistics I, Physics I. The rest was about software and programming (at least!) - second year: Mathematics IV, Statistics II, Physics II. The rest was about software and programming (nice!) - third year: software and programming only (very nice!) So, about 80% of the students didn't pass the first year because of its heavy mathematics + physics content. Extra: - mathematics I = logic, Boolen algebra - mathematics II = calculus - matehmatics III = Multivariable calculus and something else I don't remember - mathematics IV = Complex analysis/complex variable calculus - physics I and II = electromagnetism and friends
- ido 5y agoIt was similar for me (no physics but 2/3 of the courses were math) about 20 years ago. I suspect they do it because way more people sign up to study CS than the university can afford to have graduating every year, so they need a way to "filter out" a lot of students. They already filter out a lot in terms of admissions (you need quite good grades in high school to be able to attend the first year) so I'd wager if the purpose was to train as many people that are capable of being trained in programming we'd see a lot more students graduating every year. It's a fair point that CS is not the same as "programming vocational school" but seeing what companies use as criteria for hiring junior programmers you can't really blame the students.
- sdevonoes 5y ago> It's a fair point that CS is not the same as "programming vocational school" but seeing what companies use as criteria for hiring junior programmers you can't really blame the students. True. I don't regret attending (and passing!) all those math+physics lectures to be honest. All the stuff I missed in uni regarding software engineering and programming I learnt them quite fast and easy in my own time (e.g., at least for me after passing an exam full of Cauchy-Riemann Equations and friends, it was quite easy for me to learn Java or to go through books like TCP/IP Illustrated or The Art of Unix Programming in my own time).
- Cistro 5y agoI wished there was a list that maps these classes to it's equivalent on Coursera / edx (if they exist). I've noticed that interesting classes like SICP cs61a from Berkeley still take place online (their material is available), but are no longer available on the MOOC platforms. The same goes with some interesting MIT classes (Introduction to Computational Thinking) (Although a certificate from such platform doesn't mean that much to me, it does help somewhat with motivation and looks better on a beginners resume than nothing. )
- low_tech_love 5y agoWhen I browse around these courses, I see a couple of high-profile names teaching them, but it's interesting to see how the overwhelming majority of the teaching work is done by brilliant people who almost never make it to the spotlight. I hope they are getting the recognition they deserve at least in their inner circles.
- kilodeca 5y agohttps://github.com/geohot/fromthetransistor https://github.com/geohot/fromthetransistor
- jjice 5y ago> Practical Unix I hope this is a required course. I wish it was a freshman year course for me. I had to pick Unix up on my own (and fell in love while doing so), but a lot of my classmates didn't, and it made group work in the future a bit of a pain. Not that it is there fault, but it would have been nice to lay down an OS framework for students instead of focusing solely on writing algorithms and leaving what SSH is to mystery for a lot of students.
- billti 5y agoNot to be nit-picky, but I wonder if it shouldn't be "Practical Linux"? How many people work with Unix vs Linux these days? I would guess amongst the graduate demographic Linux is also probably a more recognizable and attractive term than Unix. On the general point though, I totally agree. Even after nearly 30 years of working on Windows, learning Linux has been one of the best investments I've made over the past decade. No matter what OS you run locally, doing anything with the cloud, Android, Docker, etc. means understanding the basics of Linux.
- karpierz 5y agoIn my (limited) experience, the majority of engineers in the valley end up working on MacBooks, so Unix would be the lowest common denominator.
- xputer 5y agoYup, I somehow managed to graduate with a Master in CS without knowing what grep was...
- z5h 5y agoWhy OO? Why C++ so early in the curriculum? These seem like very specific/opinionated tools. I got a degree in math without ever taking a “HP 48GX” course.
- zozbot234 5y agoThere's a history of teaching C++ to novice programmers, with some success. It even used to be a language of choice for AP intro-to-programming classes. Teaching Swift or Rust would be far more opinionated. As for OO, while old-fashioned it's something that new grads should at least know about, and it can still be useful if you avoid the big footgun - namely, implementation inheritance.
- z5h 5y agoThat's fair about the history of teaching C++. If it ain't broke, don't fix it.
- tsss 5y agoLooks like something you'd find at some no-name technical college in Germany and not a top university. Where's the linear algebra, multivariate calculus, real analysis, differential equations, graph theory, abstract algebra, numerical mathematics, stochastics, etc.? Those are all required courses in my degree with additional options in complex analysis, functional analysis, topology, measure theory and so on. How are they planning to do those robotics or machine learning classes without the mathematical prerequisites in linear algebra, differential equations and optimization? It looks more like a vocational training program to me. No self-respecting university here would offer courses on "mobile development" or "web development". Even for analysis of algorithms you need basic calculus which apparently isn't part of the high school curriculum in the US (although we can assume that everyone who makes it to Stanford would've taken AP classes).
- joelfolksy 5y agoMath classes are taught by the Math department.
- H8crilA 5y agoWhat's the point of this post? This is exactly what you'd expect from any CS course on any decent university.