Halfway through my time at MIT...
I’ve just officially finished my second year of college and I’m proud to say that I’ve passed all my classes! This past semester has been very different from my three of the past. Halfway through it, us undergraduates were all sent home because of concerns over Covid-19. There was no more attending classes in filled lecture halls, no more psetting with friends in the lounges of Next, and no refreshing walks along the Charles… EVERYTHING was viRtUaLiZeD.
While MIT’s response to the situation wasn’t the best (lots of delayed decisions and inflexible policies), everything turned out to be “okay.” To us students, sending us home on a notice of less than a week seemed harsh and rushed, but looking back on things, it was definitely for the better on the public health side of things.
As for the other aspects… welp… they went as well as one can expect a virtualized college experience can go. In general, I believe that attending college is about the people I get to meet/work with and the opportunities/resources I have access to. Especially at MIT, I don’t think the courses here are necessarily groundbreaking or teach me that much more than any other class at any other university1, but instead they let me interact with other people (students, TAs, professors, etc.) and open the doors to new opportunities. Virtualized classes kills all of this.
After coming back, most classes became asynchronous. Out of the five classes I took, only 2 classes required meeting regularly. Albeit, I am a 6-22 and my classes deal with computers and can be completed basically anywhere, I felt like taking virtual classes taught me less than what I would have learned in person. One can blame this on material being left out of the curriculum3, or the lowered standards because of the remote classes4, lack of preparation for fully remote classes5, or even my own lack of motivation to learn6. End of the day, I believe that students learn less remotely; much less!
That being said, I want to thank all my professors (and TAs) for being accommodating throughout the semester7. While I could talk all day about each of my classes, I’ve summarized a bit about each of my courses below. Note that these are my opinions on the Spring 2020 run of the course.
6.004 - Computation Structures
- MIT’s de facto “learn how a computer works” class
- You learn to program a CPU with assembly code in the beginning of the course and then learn to “build” the CPU in the rest of the course.
- There is no actual hardware in this class, you write code that connect logic gates together and the computer will simulate everything for you. All you people scared of hArDwArE can rest easy. 😃
- Well taught course and while it might not be the “6.004” before it was changed8, it is definitely a good introduction to the internal workings of a computer.
- Seems like it prepares you for more specialized courses… maybe 🤷♂️??? I haven’t taken any, so I wouldn’t know.
- Grading is transparent and you know exactly how you are doing in the class. Accumulate points by finishing assignments, taking quizzes, and attending recitation. You get a letter grade based on how many points you have at the end of the semester.
- Grade boundaries are released at the start of the course and don’t change.
- 3 quizzes but no final (has an “optional” final design project instead).
- Professor Silvina Hanono Wachman is clear in lecture and is generally able to explain concepts well.
- Professor Jason Miller only lectured once or twice. Don’t have much of an opinion, but seemed fine??? (His lectures were all about Minispec specifically)
- Domenic Nutile is a very good TA! Easy to understand and was able to answer all our questions!
- Lectures mainly just introduced concepts. (Went to all of them in person, but only watched 3-4 of the recorded ones once it went virtual).
- Course has up to date recorded lectures. (Our live lectures were also recorded.)
- Recitations are “required”. (Attending recitations is free points, but I guess you can skip if you want.)
- Quiz review sessions are very helpful!
- Quizzes are very similar to the practice quizzes
- Labs only have vague connections to the rest of the course.
- Minispec isn’t hard to learn. Read the Minispec Reference pdf; gets you up to speed much faster than the excessive number of examples.
- Low effort guide:
- Possible if you are already familiar with the material prior
- Skip lectures
- Skip some of the recitations (depending how well you know the material and how many points you need)
- Ignore recitation practice problems
- For quizzes, attend review sessions and read through practice quizzes
- Read the Minispec Reference pdf to pick up Minispec.
- Do all the labs fully and as much of the design project as needed.
- Personal approach:
- Was already familiar with most of the curriculum
- Attended all live lectures (but only watched a few recorded ones.)
- Attended all recitations (bar two on Zoom… totally didn’t forget recitations existed when I came home…)
- Attended the review session and read through an extra practice quiz before each quiz.
- Didn’t do any of the review sheets.
- Picked up Minispec by reading the pdf making my own Intellij Plugin! (You can find it here!)
- Completed all the labs fully. (Didn’t do the design project as it was optional for us.)
- Time spent:
- Labs: 1-4 hours each (2 on avg)
- Recitations: 2 hours per week
- Lectures: 3 hours per week
- Quiz prep: Review sessions for 2 hours and another 2-3 hours looking at material.
6.08 - Embedded Systems
- The “IOT” class
- Great introduction course to connecting hardware and software.
- Learn how to wire and program an Arduino like development board.
- Learn how to communicate with a server.
- Learn to develop something from start to finish. (Hardware component, server side and everything in between.)
- Class is structured as lectures/labs for the first half (8-9 weeks) and group project work for the second half.
- Has one very easy midterm! (If you know the material, you shouldn’t really need to study.)
- Joe Steinmeyer is a very fun lecturer and lectures are very entertaining, but content was very surface level (as it should be in an introductory course). Can skip, but why would you?
- Homework assignments are sometimes tedious, but usually aren’t too bad. They usually teach you how to solve the problems on them, and when they don’t, one can figure out how to do them with Google.
- Lab are mandatory and you work with a randomly assigned partner (different every week).
- Labs generally shouldn’t take the entire time and most people leave early.
- Working with hardware comes with very frustrating errors that are often unexplainable if you don’t know what’s going on.
- Setting things up is definitely the hardest portion of the class. Many people with Macs had driver issues that rendered getting any work done for the first two-three weeks impossible.
- Piazza response is almost instantaneous. Joe Steinmeyer is actually a god!
- C++ can be hard since pointers can be difficult to grasp. Use Google as much as possible!!!
- Design projects ramp up in difficulty fast. Do the early ones!!! (Though there are usually 1-2 easy ones at the end if you want to test your luck.)
- Course might be “too easy” if you’ve done any sort of electronics project before.
- Regardless difficulty, it is a VERY fun course if you have a passion for this kind of thing.
- For people that know the material well enough, there was an option to be a Student Lab Assistant (SLA) which meant you were an LA for the labs but did everything else as a student. (Caveat was that you had to work with other SLAs for the final project, so either make all your friends SLAs or just be a student.)
- Low effort guide:
- Skip lectures (sad but they aren’t that useful to pass the class)
- “Speedrun” the labs (personally against this as this means corners are cut … but it is possible as most LAs/TAs aren’t too picky with checkoffs)
- Do HWs as normal
- Do the first few design projects (or just pick the ones that seem easy)
- Don’t study for the midterm (Doing the HWs should be enough)
- Form a good group for the final project and don’t take on too hard of a project
- Heavily utilize material from the first half in the project
- Personal approach:
- Attended most lectures
- Was an SLA for the labs, so I did them in staff meeting on Monday nights instead.
- Did HWs as normal
- Did the first few design projects
- Took a look at review slides for the midterm
- Formed a group with some other SLAs and took on an expandable project.
- Did lots of exploration of new technologies on the final project (flask-socketio, SQLAlchemy, etc)
- Time spent:
- Labs: 2x 2.5 hours (SLA so I stayed for the entire session)
- HW: 2ish hours per week
- Design projects: 4-5 hours per week (I put lots of effort into these just for fun!)
- Final project: 5-10 hours per week (My group usually just crammed the night/day before deadlines).
This post is already becoming very long (and taking much longer than I anticipated), so I’ll continue thoughts about my other classes in another post. Thanks for reading! Here is a random picture I took of a squirrel for getting to the end!
This is just going off conversations I have with friends attending other universities. I have not taken a course from another university. ↩︎
Computer Science and Electrical Engineering major. No, this is not two majors. (I am not that try hard to double major at MIT!) It is actually a flexible major that allows you to pick where on the EE to CS scale you want to focus on.9 ↩︎
Because of the virus, MIT canceled a week and a half of classes; forcing professors to shift curriculum. ↩︎
It’s hard to make a course entirely on the internet! Not only does everything needs to be digitized and accessible to all students (of all resources) some demos learning mediums can’t be as easily communicated through a screen. ↩︎
Nope no excuses here… 😰 (also just want to see if someone bothers to click on all the footnotes). ↩︎
Even when I don’t deserve it 😛 ↩︎
Upperclassmen often complain how this class isn’t as good as it used to be. ↩︎
No, this is also does not combine course 6 and course 2 😝 ↩︎