This Wednesday was my last day of class. Forever.
My journey through college has been quite unpredictable. I started my freshman year in 2019, only to get kicked off campus during the start of Covid.
I began college majoring in History, and am leaving with a degree in Computer Science.
I took 2.5 years off in the middle of college to work on startups. I didn’t think I’d make it back!
I wanted to reflect on my favorite courses. Which courses will I remember in 10 years? Which gave me valuable skills or interesting ways of thinking about the world?
In no particular order.
CS 61: Systems Programming and Machine Organization
CS 141: Computing Hardware
GOV 94R: The Politics of Nuclear Weapons
PHIL 137: Later Wittgenstein
AFVS 52: Intro to Nonfiction Filmmaking
CS 61: Systems Programming and Machine Organization
This is one of Harvard’s notorious weed-out computer science classes. You learn the fundamentals of the Linux x86-64 operating system. Memory, Input/output, system calls, kernels, processes, threads, deadlocks, etc.
The entire class is taught using C++ and by definition, is very bare bones. You get a very clear look inside the inner machinery of the lowest level of code that makes all our day to day applications, games, and programs that we run on our computers possible.
While it was a massive time commitment (even with the help of GPT), CS 61 definitely made me a better engineer. It helped me the ability and patience to move one layer deeper into a problem and actually understand what is going on under the hood.
This skill builds a sense of resilience and fearlessness when you come across an inevitable error message or something goes wrong. You look carefully at the clues. See where they point to.
Dig deeper and try to understand what is happening one level deeper than where you’re operating. Bugs are often a result of a lack of fundamental understanding.
After slugging through CS 61, I feel like there’s no technical issue that I can’t get to the bottom of. It may be hair-splitting. But at least I know where the software stops and meets the metal. There is always some mechanism to understand that will unlock your issue.
CS 141: Computing Hardware
CS 141 picks up where CS 61 stops (i.e. the bare metal of your device) and keeps going layers of abstraction deeper. The course gives you a strong understanding of the low-level, physical computing stack.
You start by understanding combinational logic circuits and work your way up through flip-flops, adders, registers, microarchitecture, and instruction set architecture.
I feel like I am no longer an imposter CS student after taking CS 141. The course gave me an understanding of how we humans transformed logic and electricity into full working computers.
The biggest and what I anticipate being the most lasting effects, are two-fold. First, CS 141 made me a much stronger engineer. The ability to navigate a deep technical stack, manage complexity, and solve problems at different levels in the stack is extremely valuable. It lets you work on problems that surpass our measly human context window; there’s only so much information you can keep in your head at once.
The second, was writing extremely modular code. The only way to keep your sanity in computer architecture is to make sure each part of your chip is broken into clean, modular, components. This ensures consistency, understandable code, and replicability.
While I spend most of my time at the highest part of the stack making consumer applications, forcing myself to learn System Verilog and build a CPU from scratch undoubtably raised my standard for what clean code looks like.
However, the most surprising thing I got out of the course was a much deeper respect and sense of awe for the work of chip design companies like Nvidia and AMD. Technology is not the bottle neck; people are.
I was struck with how nearly all the progress in computer architecture over the last 25 years is a result of getting really smart people in a room to try to figure out clever tricks to improve efficiency. The problems are rarely mathematical; they more closely resemble visual puzzles found on IQ tests.
In this sense in humanized the semiconductor industry for me.
GOV 94R: The Politics of Nuclear Weapons
This class was both a cash-course on the technical history of nuclear weapons and a hands-on lesson in statecraft.
We read declassified technical weapon specifications, memos between Soviet submarine captains, diplomatic cables, and modern era nuclear disarmament treaties.
The class gave me a really solid understanding of the specific weaponry, why it matters, which direction it’s going, and how countries leverage their nuclear capabilities to their advantage.
The class also centered around multi-hour, in-person war games and negotiation simulations. We would be assigned a nationstate team, tasked with several extremely in depth readings to understand their motivations and assets, then be faced with playing their cards the best in an unpredictable, high-stress, real world scenario.
Not only was this extremely fun, but it helped me develop my ability to understand someone’s else’s strategic position. This is extremely practical in life, and adds a new level of depth to your understanding of nation-state competition and diplomacy.
This course gave me the ability to look at the ever-shifting balance of power in the world and see how each actor is playing their cards. Analogy continued: to become a high level poker player, or an extremely informed viewer, it helps to understand each player’s strategies, motivations, and history. It prevents you from being in hands you should get out of, and allows you to identify when the odds are in your favor.
I don’t plan on negotiating arms control agreements anytime soon, but this course absolutely made me more effective at negotiating, developing strategic empathy, and navigating conflict.
PHIL 137: Later Wittgenstein
PHIL 137 focuses on the later philosophy of Austrian philosopher Ludwig Wittgenstein. We closely read The Blue Book and Philosophical Investigations.
This course was fascinating.
It felt like taking CS 141 but for language.
Wittgenstein operates at an extremely low-level in “the stack” if you will. Normally philosophers discuss questions of ethics, living the good life, truth, etc.
Wittgenstein focuses on getting us to see that our interactions, thoughts, and conscious experience is inseparable from language.
He also introduces a series of intellectual “moves” more akin to judo throws than philosophical statements. These “Wittgensteinian moves” are very astute ways of dissolving several tough philosophical problems such as Solipsism.
“Only I know that I exist. How can I know that all these people around me are real and not just pretending to be real?”
Wittgenstein would probably respond, “it’s meaningless for you to use the word know here. You simple exist. Your use of to know is unfalsifiable. In order for the word know to be meaningful, it must be possible for the converse to be true, to doubt the thing in question. Thus, just as it makes no sense to say “I doubt that I exist” it makes no sense to say “I know I exist.”
Late night existential conversation successfully disarmed. Thanks Phil 137.
Personally, the most interesting implication of Wittgenstein’s idea that reality is bound by language is that we can evolve our langue in order to increase our conscious experience.
In a world in which human minds all have Neuralink-like devices, what new language will we be capable of understanding? What new grammars or forms of life as Wittgenstein calls them, will emerge?
AFVS 52: Intro to Nonfiction Filmmaking
Hands down the most fun class I took at Harvard.
You watch a wide variety of non-fiction films. You discuss them with smart and creative people. Then you learn the fundamentals of camera, sound, and postproduction editing and make it happen.
I made three short films over the semester, one of which you can see here.
The practical skills gained in this class rival, if not surpass most CS classes. I learned how to use a professional grade camera. I developed a strong vocabulary for describing shots, lighting, movements, and cuts. I learned Adobe Premiere. I picked up several new techniques for story telling and conveying a message through strictly non-verbal sensory mediums.
Out of all the classes I’ve taken, I find myself using things I learned in AFVS 52 the most.
This class easily made me a 10x better prompter for AI image and video gen tools like Sora, Midjourney, and Kling. Having the vocabulary and concepts to precisely describe visual scenes has been extremely valuable in the recent work I’ve been doing with Yapper.
I also feel super comfortable making launch/demo videos in Adobe Premiere (i.e. ABBY launch video on Valentines Day).
AI is about to give us all creative superpowers. Understanding the fundamentals of film lets you get the most performance out of them.
If you made it this far, thanks for reading and I’d love to hear from you. Which courses had a lasting impact on you? Shoot me a message on Twitter or comment on this post.
Until next time,
Emmet
Beautiful reflection, Em. Proud of you.❤️❤️