I examined MIT's course catalog. They have 4 undergraduate programs in the Department of Electrical Engineering and Computer Science:
- 6-1 program: Leads to the Bachelor of Science in Electrical Science and Engineering. (Electrical Science and Engineering)
- 6-2 program: Leads to the Bachelor of Science in Electrical Engineering and Computer Science and is for those whose interests cross this traditional boundary.
- 6-3 program: Leads to the Bachelor of Science in Computer Science and Engineering.(Computer Science and Engineering)
- 6-7 program: Is for students specializing in computer science and molecular biology.
So, looking at the requirements, I began to determine which classes I'd require. Once I had this, I could then begin to search the MIT OpenCourseWare site to ensure the classes are offered, or find suitable alternatives on Coursera or Udemy. As is typical, there are General Requirements and Departmental Requirements. So, beginning with the General Institute Requirements, lets start designing a computer science program with all the fat (non-computer science) cut out.
I removed that which was not computer science related. As I mentioned, I was aware I may need to add some math/science. So, for the time being this left me with:
Notice that it says
one subject can be satisfied by 6.004 and 6.042[J] (if taken under joint number 18.062[J]) in the Department Program
It was unclear to me what "if taken under joint number 18.062[J]" meant (nor could I find clarification) but as will be shown later, 6.004 and 6.042[J] are in the departmental requirements, so let's commit to taking those two which would leave the requirement of one more REST course. After some Googling I found the list of REST courses here. So, if you're reading this to design your own program, please remember that later we will commit to 6.004 and 6.042[J] and go here to select a course.
So, now on to the General Institute Requirements Laboratory Requirement. We only need to choose one of three:
- - 6.01: Introduction to EECS via Robot Sensing, Software and Control
- - 6.02: Introduction to EECS via Communications Networks
- - 6.03: Introduction to EECS via Medical Technology
So, to summarize the general requirements we will take 4 courses:
Major (Computer Science) Requirements:
In keeping with the idea that we want to remove non-essential, and non-CS courses, let's remove the speech class. So here we have a nice summary of what we discovered above in the General Requirements, along with details of the computer science major requirements:
As stated, let's look at the list of Advanced Undergraduate Subjects and Independent Inquiry Subjects so that we may select one from each of them:
Lastly, it's stated that we must
Select one subject from the departmental list of EECS subjects
a link is provided to do so, however it brings you here and I cannot find a list of courses. I believe that this link no longer takes you to the intended location. A Google search brought up a similar page, but with a list of courses, as can be seen here. So, I will pick one from that page.
Sample List of Classes
So, now you will be able to follow the links I provided above to select your classes. I will provide my own list in case you'd just like to us mine:
- 6.0001: Introduction to Computer Science Programming in Python : 2 parts consisting of Introduction to Computer Science and Programming Using Python and Introduction to Computational Thinking and Data Science
- 6.042[J]: Mathematics for Computer Science: Mathematics for Computer Science
- 6.01: Introduction to EECS via Robot Sensing, Software and Control : Introduction to Electrical Engineering and Computer Science I
- 6.004: Computation Structures : Computation Structures
- 6.006: Introduction to Algorithms : Introduction to Algorithms
- 6.009: Fundamentals of Programming
- 6.031: Elements of Software Construction: Elements of Software Construction
- 6.033: Computer System Engineering (CI-M) : Computer System Engineering
- 6.036: Introduction to Machine Learning
- 6.045[J]: Automata, Computability, and Complexity : Automata, Computability, and Complexity
- 6.814: Database Systems : Database Systems
- 6.035: Computer Language Engineering
- 6.S080: Brief Introduction to Python