I’ve been asked a few times (mostly while TAing) what courses I’d recommend at Stanford, so here’s a handful (written in mid-2023):
CS 140E is an introductory operating systems course. It’s a lot of hands-on work—on the order of twelve hours of lab time per week, plus other homework—but it provides a much more authentic taste of what operating systems development is like than a more traditional class might. It’s particularly well-suited to students interested in electrical engineering, mechanical engineering, or hardware in general (unlike many other OS classes, 140E is entirely on real hardware with no virtual machines involved). This class is generally offered once a year in Winter Quarter. I TAed this class several times.
CS 144 is an introductory class in computer networking. This is a combination lecture/lab class. Lectures (and exams) cover theoretical material and underlying math/algorithms; labs (and assignments) involve actually implementing a network stack in C++. When I took it, the final lab involved combining all the previous labs and running real UNIX programs over our homemade TCP implementations.
CS 245 (when I took it) was a very useful overview of databases. While CS 145 focuses more on using databases (e.g., SQL), CS 245 focuses more on how databases are implemented. This is mostly a paper-reading class.
CS 242 was an interesting exploration of programming languages concepts. The class tends to be more theoretical (there’s a lot of type theory, along with lambda and pi calculus), so the assignments generally take a while to think through and do; I’d take this in a quarter without any other conceptual classes.
All the graphics classes I took were very well-taught in my opinion:
CS 148 is an introduction to graphics; it’s suitable for someone with no graphics experience. Most of the assignments involve some amount of creative expression (the class is very visual), and most students take advantage of the final project as an opportunity to create a piece of computer-generated art.
CS 248A is an introduction to real-time graphics specifically. It’s more technical work and math than CS 148, and could serve as an alternate introduction for students who are more interested in implementing their own graphics pipeline.
CS 348B (no longer offered, sadly) was a great overview of physically based rendering. Even though the class isn’t offered anymore, the textbook is available online and is worth reading.
CS 348C is a course specifically focusing on simulation methods. It’s very physics-based (e.g., fluid simulation is basically just implementing the equations for fluid dynamics; the trick is doing so in a way that’s both accurate and fast). This is mostly a paper-reading class.
ARTSTUDI 170 is an introduction to photography via black-and-white film photography on 35mm SLR cameras. The course uses analog cameras (Nikon FE2s or Nikon FM2s) to put emphasis on planning and composing photos. This is a really different experience than taking digital photos (e.g., on a phone). A single roll of film will only hold about 36 photos, so you have to be judicious with choosing what shots to take. There’s no automatic exposure settings to fall back on, so planning out the shot (taking into account the ambient light level) is critical. Since you have to develop the film yourself in the photo lab and then print it yourself in the darkroom, there’s often a week of latency between hitting the shutter and seeing what you captured for the first time. Having taken this class, there’s a definite separation in my mind between “journaling” photos (photos I’m taking just to capture what I see) and “artistic” photos (photos I’m deliberately planning/taking for artistic purposes).
DANCE 46, DANCE 146, DANCE 156: these are the ever-popular social dance classes taught by Richard Powers. If you can get in, these are amazing classes; Social Dance I requires absolutely no experience, and is approachable even for people who think they can’t dance. Contrary to popular belief, it’s possible to get into Social Dance I even if you’re initially waitlisted; just stay on the waitlist until the first day or two of class to see if enough spots open up. When I took it I didn’t even sign up until three days after course enrollment opened, and I still got in after the first day.
DANCE 133, DANCE 147: these are more specific classes taught by Richard Powers about specific forms of Social Dance. They both take the structure of following a certain dance (waltz and swing, respectively) forwards in time, from its genesis to the modern-day families of dances descended from it. These classes are less “practical” in that many of the historical forms are no longer regularly danced at social dance events, but Richard sometimes throws in the more popular ones at Jammix.
LINGUIST 1 is an overview of linguistics; the material covered is very useful background knowledge if you’re ever curious about how languages function/change/exist.
LINGUIST 150 is about how language and society impact each other, which has important ramifications on modern society. It can be taken without having taken LINGUIST 1.
SPECLANG [any]: The special language program courses I’ve taken (Sanskrit and Hindi, specifically) have all been great. Sanskrit was more of a reading course (like a Latin course might be), while Hindi was a full spoken-language/culture course. Neither required any prior knowledge, although in my case knowing Latin did help with Sanskrit.
CS 195/CS 199: This is a placeholder for undergraduate research and/or independent studies; this was a really important part of my undergraduate experience. Different people have different feelings on research; I personally liked it so much that I signed up to do a Ph.D.
CS 349T: This was a one-off project class taught during the pandemic trying to develop technology to allow live theatre to continue while everyone was stuck at home. This is mostly here as a placeholder for “take whatever random classes seem interesting”; I signed up for this class on a whim, but it ended up being one of the most important decisions I made during undergrad (it was a strong factor in my choice to do a Ph.D.).
© 2024 Akshay Srivatsan