Courses
* indicates a course worth taking, in my humble opinion.
! indicates a course that was exceptionally hard or time consuming for me.
Spring 2020
- 15-745 Optimizing Compilers for Modern Architectures
    
- This is a course on writing optimization passes more than a raw compiler. It is appropriate to take this course without having taken 15-411 Compiler Design.
 
 - * 99-361 Learning About Learning (IDeATe portal course for Learning Design)
 
Fall 2019
- TA 15-213
 - 15-440 Distributed Systems
    
- As a second systems course, it was not very hard. I also had a very good partner.
 
 - 15-322 Introduction to Computer Music
    
- Requires programming in a suboptimal programming language, would not recommend.
 
 - 57-173 Survey of Western Music History
 
Spring 2019
- 15-400 Research Practicum in Computer Science
    
- The check-in meetings aren’t that bad. Though I do not recommend taking this course due to the final paper, as oftentimes you will not have enough results to write a full paper.
 
 - 15-451 Algorithm Design and Analysis
    
- If David Woodruff is teaching it, there will be some really interesting algorithms and data structures at the end.
 
 - 15-259 Probability and Computing
    
- Very heavy on weekly problem sets, reminds one of high school
 
 - 51-262 Communication Design Fundamentals
    
- A little light on formal instruction, which I am not sure if is a good idea for beginners.
 
 
Fall 2018
- TA 15-418
 - 15-414 Bug Catching: Automated Program Verification
 - 15-300 Research and Innovation in Computer Science
 - 57-152 Harmony I
 - 54-508 Theatrical Sound System Design
 
Spring 2018
- TA 15-455
 - * 15-418 Parallel Computer Architecture and Programming
 - 15-210 Parallel and Sequential Data Structures and Algorithms
 - 57-338 Sound Editing and Mastering
 - * 57-438 Multitrack Recording
 
Fall 2017
- 15-213 Introduction to Computer Systems
 - ! 15-855 Graduate Computation Complexity Theory
 - * 02-261 Quantative Cell and Molecular Biology Lab
 - 57-337 Sound Recording
 - 57-329 Beginning Piano for Minors
 
Spring 2017
- * ! 21-269 Vector Analysis
    
- Enough math for all of college.
 
 - * 15-251 Great Ideas in Theoretical Computer Science
 - * 15-150 Principles of Functional Programming
    
- Functional programming is the cleanest way to do most things in software engineering, you will use the principles learned here many times later on.
 
 - 54-666 Production Audio
 - ! 80-221 Philosophy of Social Science
 
Fall 2016
- 15-151 Mathematical Foundations for Computer Science
 - 15-122 Principles of Imperative Programming
 - * 21-242 Matrix Theory
 - * 79-233 US and the Middle East since 1945
    
- Provides a lot of reading and background on US foreign intervention both in the Middle East and beyond, allowing one to form their own perspective
 
 - 76-101 Interpretation and Argument