Skip to content ↓
MIT blogger Alex M. '21

Exploring Classes by Alex M. '21

a guide

Choosing a class schedule at MIT can be hard. There are so many factors to consider: staying on track with HASS classes, completing major requirements, finishing up the GIRs, avoiding schedule conflicts, and trying to maintain a reasonable course load are just the beginning.

Luckily, there are a number of different course planning websites (and apps!) to choose from, and I even have some tips on how to use them effectively. First, let’s look at all the tools we have available.

Course Exploration Resources

firehose screenshot of class schedule
firehose filter interface
my chaotic tentative schedule vs the serene and supremely useful firehose search filters

Firehose is one of the most popular schedule planning tools at MIT. You can search for classes by number, and filter by different categories, which makes it really easy to explore. Do you need a course 2 class that counts as an Institute Lab? Or maybe a HASS-H that fits your schedule, doesn’t have a final, and isn’t a CI-H? No problem. Firehose is most useful for planning for the next semester and finding classes that don’t conflict, but isn’t meant for tracking graduation requirements over multiple semesters or years.


screenshot of new courseroad
screenshot of old courseroad
my freshman year in new vs old courseroad

CourseRoad is also very popular at MIT, and it lets you plan out your classes over a longer period of time, tracking different requirements and prerequisite chains over four years. I happily spent many hours freshman year building out possible trajectories of my life at MIT. My CourseRoad shows at least 25 saved roads, where I carefully planned out various double major combinations, none of which I ended up pursuing. There is a new version and an old version of CourseRoad; I like the old version better, visually, but I think the new one is better-maintained.


screenshot showing 100% 6 minor completion, 82% 16 major completion, and 91% GIR completion
my fall schedule on fireroad

FireRoad is an app that essentially combines Firehose and CourseRoad. You can create lengthy roadmaps of your classes over multiple years, and also view your projected class times for each semester you map out. FireRoad is pretty new but already pretty popular at MIT. Like Bernie Sanders, I hate apps, so I don’t use it a ton, but I honestly think it’s really well done, and probably would have used it a lot if it had existed my freshman year.

MIT Degree Charts

text box that says degree charts
text that says aerospace engineering

The MIT Degree Charts show all the requirements for each major. This is very useful for exploring and comparing different majors, as all the requirements are listed very clearly. Also, some charts list elective subjects that can count towards the major, creating a useful jumping-off point for exploring popular undergraduate electives in different departments.

MIT Subject Evaluations

screenshot of course evaluation website

7/7 is pretty good! (also rare)

At the end of each semester, MIT invites students to evaluate all their classes and instructors from 0-7. The subject evaluations website maintains a database of recent class evaluations, so you can explore different subjects and see what their overall ratings are, as well as a few other details like how many hours per week students spent on homework for each subject.

MIT Departmental Websites

mit meche logo

Pretty much all departments at MIT maintain a website, and some of them have useful information regarding course offerings and suggested paths to degree completion. Most at least have information explaining the differences between different majors offered by the department; some go beyond and add explanations of what the requirements are for each degree, and why those are chosen. MIT AeroAstro, the best department at MIT, has a lot of this useful information in the “Undergraduate Program” section of their website.

MIT Course Catalog

subject listing logo

prereg is closed :( but registration is open :)

The MIT course catalog is actually pretty useful. Once you understand the ins and outs of the course numbering system, it’s probably the easiest way to find a simple list of classes in a particular subfield of a department. However, this one is less beginner-friendly than some of the other resources listed above.

Talking to People

In particular, talking to your advisor or upperclassmen in your major is incredibly helpful for course selection. I actually love choosing classes, and I’ve spent a truly absurd amount of time figuring out how to graduate on time after changing majors, so anyone desperate for help or advice can hit me up at [email protected] Alternatively, just talk to your advisor.

How I Actually Use These Things

Now that we’ve covered some useful resources, we’re on to the hard part: actually putting together a schedule. MIT students, myself included, tend to be great at finding interesting classes, but absolutely terrible at distilling their “want to take” list into a reasonable schedule. Many sophomores, freed from the credit limit for the first time, have a proud tradition of preregistering for fifteen classes, registering for seven, and slowly dropping them throughout the fall like leaves. This works for some people, but it doesn’t work for me, and it’s impossible altogether if you have a credit limit.

My favorite trick to avoid this is forming a Minimum Viable Schedule (MVS). Your MVS consists of the classes you would finish the semester with if you needed to drop absolutely everything else. Generally, it’ll be 36 units of graduation requirements, with no conflicts. You can find graduation requirements using the GIR list and the MIT degree charts, and you can check them for conflicts using Firehose.

As an example, here’s my MVS from freshman fall, a pretty typical set of GIRs:

frosh mvs

36 units of GIRs baby

To figure out your MVS, pull out your “want to take” list, and make sure you have at least a few classes that count towards degree requirements on there. If you’re struggling to build your “want to take” list, I recommend searching Firehose by keyword to find classes you might be interested in; type in something like “electronics” or “astronomy” or  “energy” or “public policy”, and you’ll find interesting classes that span different departments. Also, look at your requirements using the GIR list and MIT degree charts, then search the MIT subject evaluations to decide on classes that fulfill requirements but also look enjoyable. Another underrated strategy is just scanning sections of the course catalog for departments that interest you; I usually skim through certain sections of the cataloged offerings in 2, 6, 16, and various HASS departments to find interesting-looking electives.

Once you have a nice, long “want to take” list, split the classes on your list into several broad categories based on why you want to take them and what requirements they fill. It’s okay to list some classes multiple times if they fit into multiple categories.

My list for this semester, separated by category, looks like this:

list of classes i want to take

i want to take >=2 grad classes in the next year

Now, rank the categories in order of importance, and rank classes within each category by how much you want to take them.

My ranked list for this semester looks like this:

classes i want to take, ranked

the categories are ranked by how much i need them to graduate

Next, choose your MVS. Begin by choosing the top-ranked class from your top-ranked category and adding it to your schedule. Next, choose two more highly-ranked classes, likely the second-ranked class from the top-ranked category and the top-ranked class from your second-ranked category. If there are schedule conflicts, you may have to choose some lower-ranked classes.

Behold, my MVS for fall 2020!

senior mvs: 16.30, 16.410, 21g.301

36 units! degree requirements!

Now, it’s time to rerank your categories, and rerank the classes within each category. Here’s my reranked list:

classes, reranked

my MVS got requirements out of the way, so now i can rank in fun order!

Figure out how many units you want to add to your MVS. This should be equal to min(credit limit, sanity limit) – MVS units. For me, this comes out to min(∞, 48 to 60) – 36 = 12 to 24. It’s okay if this number is 0. It’s also okay if this number is negative.

If you still have units left, choose the top-ranked class from your top-ranked category and add it to your schedule. If you still have units left, take either the second-ranked class from your top-ranked category, or the top-ranked class from your second-ranked category. Keep doing this until you run out of units.

My final schedule for this semester:

final classes: 2.678, 16.851, 16.30, 16.410, 21g.301

actually might swap french for spanish but we’ll see

Finally, remember that MIT lets you take (most) classes on listener status, so you can get access to course materials without the commitment of taking the class for a grade. This is a great option if you have a couple of classes that you still really want to take but can’t fit into your schedule. Alternatively, you can use a tool like CourseRoad or FireRoad to plan out your path to graduation, and you can just schedule the subjects-that-got-away for next semester.

Good luck! Have fun! Don’t register for more classes than you can handle! And check out these posts by Yuliya K. ’18 that cover P/NR, the GIRs, MIT’s grading system, and how to get into the best CI classes!