What Makes a 'Good' Class?

I'm approaching my final semester at Princeton and course selection is coming up quickly. This has prompted some introspection: it's the last time I'll choose courses and that comes with some responsibility. Suddenly, here I am, with four slots remaining and a laundry list of subjects and professors left to experience.

The interesting thing is that it's still hard for me to define a good class—even with the benefit of hindsight, it's not always clear what made one course worth taking over another. Was it a function of the instructor? Or the material? Or something else entirely?

This is my attempt to answer these questions.

My Background

Real quick: I'm a computer science major. I've taken ~19 computer-science-based courses (including two semesters of independent research).

Apart from those 19, I've taken four courses in math or statistics, along with nine liberal arts classes, which span the History, Sociology, Asian-American Studies, Near-Eastern Studies, Philosophy, and Religion departments.

This is a reasonable cross-section of the offerings on campus, but one that's skewed towards the experience of an engineer—I really can't speak towards Task Forces in the Wilson School or Junior Papers in the Economics Department.

On the Uselessness of Exams

The clearest realization I've come to: exams are useless. In fact, I now actively avoid classes with midterm and/or final exams, if I can help it.

There are a bunch of reasons for this:

  1. From a pedagogical perspective, I retain zero information after taking an exam.
  2. Exams encourages 'teaching to the test'. In higher education, where teachers don't necessarily have an incentive for students to do well on their exams (unlike, say, in high school), this may be more aptly described as 'learning for the test', manifesting itself as students frequently asking whether x or y will be on the test (and zoning out if not). As a student, it's depressing to see both others and myself take on this attitude.
  3. In my experience, exams produced by university professors are generally not that well made. I can't quite figure out why, but they often fail to balance the material in a fair manner or encourage you to study hard facts (e.g., maps) that are then excluded completely.
  4. Exams make school a contest in memorization or, the very least, skew towards good memorizers. Without digressing too much, I feel pretty strongly that the ability to memorize is not an important criteria for assessing competency, regardless of whether college should be considered vocational training or an evaluation of intelligence.
  5. Exams contribute to a hostile learning environment. Competition becomes much more real when you pin grades down to a single sit-down with a paper and pencil.

Look, I generally do quite well on exams, but I'm always frustrated by this cycle of cram-for-test-and-forget-soon-after. They're completely counter to my goals here at school.

Of course, many will claim that exams are "necessary". Cue next section.

On the Value of Projects

Some of my most valuable learning experiences at this school have come through project-based work.

This idea can manifest itself in a variety of forms, but the basic structure: take two+ weeks at the end of the semester and (in lieu of a final exam) go explore some topic relevant to the course. The final deliverables might include a research report and/or some amount of code, all of which can be produced individually or in groups.

This is an engineer's response to the idea of a 'final paper'.

As a few examples, here are some of my own final projects:

So, why do I find these experiences so valuable?

  1. By spending several weeks on a single topic, you inevitably take a deep dive into the subject. In my experience, this leads to greater edification. Some might argue that taking a deep dive into a narrow area is less valuable than attaining a cursory understanding of a larger swath of the subject (which might be gained by an exam, for example). Of course, I'd disagree based on the previous section. But even further, these deeper dives often end up covering more of the subject than one might expect. For example, with my point location project, I gained exposure to the practical problems involved in computational geometric programming—the scope of the assignment went way beyond a narrow algorithm.
  2. By leaving the specification so open-ended, there's room for creativity and exploration. This also allows you to gravitate towards projects in which you're actually interested which, in-turn, motivates you to work harder and, in-turn, leads to a better learning experience.
  3. Projects on this scale are valuable in demonstrating competency to employers and other outside parties. (These benefits are well-described in Sal Khan's book, The One World Schoolhouse, albeit in a slightly different context.)
  4. Working in groups, especially on software, is a valuable experience that can't really be recreated in the exam setting. And by 'valuable', I mean for both soft and hard skills, e.g., not only do you need to work together efficiently and professionally, but you also need to learn the basics of source control.

I feel pretty strongly about the usefulness of projects. My advice would be to take courses that provide this kind of assessment and stay clear of examinations as much as possible.

On the Value of Independence

This is tied closely to the previous point, but courses that provide a lot of independence often make for good learning experiences.

This can come in the form of project-based final assessments or be scattered throughout the semester. For example, in COS 217: Introduction to Programming Systems, one assignment features an extra-credit competition to optimize assembly code. That's an experience I'll never forget, and while I wouldn't particularly want to do it over again, working through those optimizations on my own with some Intel manuals as my guides was a great experience.

The most extreme manifestation of independence comes through independent research. The two semesters I've spent on research have surely been the highlights of my Princeton education (see here for more) and I'd strongly encourage everyone to try their hand at it.

Questioning Precepts

I've found precepts to be sort of useless. It's not that the instructors are bad, but they often struggle to inspire. In a typical precept, I get the sense that most of the class hasn't done the reading. Determining whom to blame would be an entirely separate debate, but the point still stands: I often walk away with the sense that I've just wasted an hour.

My solution, then, has been to avoid them when possible, opting instead for classes that meet twice a week for an hour and a half (with no precept). I've found this to be a much better setup for both COS and liberal arts courses.

The latter claim might come as a surprise, but in my experience, adopting this format leads to better preparation by students, especially given that you can find small classes that abide by this format. For example, REL 230: Who Wrote The Bible? meets twice a week and the students appear to have done the reading. The course is also small enough that it achieves the desired goals of a precept by encouraging discussion.

On the Value of Small Classes

This section, again, ties in to the previous: small classes are typically better.

For starters, both students and professors typically care a lot more when the course is small. Maybe only students that care are willing to enroll in a small course, and only professors that care are willing to teach them? In a large course, it's easy to skip class and remain anonymous, but a more intimate setting keeps you honest and engaged. Regardless, both sides put in more effort—and everyone wins.

Of course, there's also the notion that smaller classes lead to increased student-faculty interaction. While this is a hackneyed claim, it's undoubtedly true, both within the classroom and beyond it.

As an example of why smaller classes are better, take COS 597E: Bitcoin and Cryptocurrency Technologies, one of the greatest courses I've taken at Princeton. It's twenty-odd kids sitting in a room with two leading experts on Bitcoin. The course was designed to be discussion-based—and it's certainly walked the walk, with nearly everyone contributing on a regular basis and interacting with the professors non-stop. I come to class every day prepared and excited to participate.

Taking these smaller classes pushes you out of your comfort zone. Try them out.

On the Value of Progression

When courses are structured such that the material builds on top of itself (or progresses sequentially), I've found them to be much, much more valuable.

Again, let me illustrate with an example. When I took the aforementioned course on computational geometry, we spent one or two lectures on the basics of the subject (like the idea of counterclockwise vs. clockwise rotations). But the class then devolved into a disjointed series of lectures on specific problems, with the problem sets barely relating to what we'd learned in class, much less anything we'd learned in the previous weeks. It was hard to find the material intriguing and even harder to retain it.

On the other hand, Robert Schapire's theoretical machine learning course opened with a few weeks worth of introduction to the mathematical formalism of the process and evaluation of learning. This gave us a great foundation and toolkit to analyze actual algorithms, starting with vector machines (SVMs) and then moving on to ensembling techniques (e.g., AdaBoost), which themselves build on learners like the SVM. The material flowed from one class to the next and constantly reinforced what we'd learned in previous weeks. Better yet, the problem sets did a fantastic job of remaining relevant to the material we'd covered recently while still requiring you to draw on important knowledge from previous weeks.

'Progression' may not be the right word, but a dependent sequence of material, with assessments that reflect and enforce this dependence, has benefited me massively as a student.


It seems like my ideal course would be small and discussion-based, with a dependent sequence of material, plenty of open-ended assignments, and a substantial final research project (like the Bitcoin course I mentioned earlier).

I look back on my Princeton education incredibly fondly. There's a lot of talk here about how "undergraduates come first", and I really believe it. Take my own education as evidence: I was able to do independent research with world-renowned professors as early as my sophomore year.

So it's clear that this school has a lot to offer. But to get the most out of it, you need to cut through the bullshit and find the truly enriching experiences—the courses that will both push and stick with you.

Thanks to Shubhro Saha for his feedback on a draft of this post.