6.01 Intro to EECS: FAQ
What is 6.01 about?
It is an integrated introduction to the fundamental ideas of EE and CS. Modularity and abstraction are key concepts for design and analysis of systems in EECS. We study these ideas in the context of software, linear systems, circuits, and artificial intelligence.
What is the format of the class?
There is one 1.5-hour lecture and 4 hours of lab. Each lab section will have at most 48 students, and will be staffed
by up to 12 lab assistants. Our goals in the labs are to allow students to engage with difficult, open-ended
assignments in a setting where there is a lot of help and guidance available.
Does it cover the same material as 6.001?
During the first few weeks, we cover software abstraction ideas including functional programming, higher-order
functions, and object-oriented programming. These ideas are in common with 001. Additional material from 001
will be available in 6.005 and other subjects.
Why are you using Python?
Python is interpreted, has relatively simple syntax and semantics, is unobtrusively object-oriented, is broadly
available, and has lots of useful libraries.
Why are you using robots?
Computing is increasingly embedded in the real world. Twenty-five years ago, it was an exciting student project to
create a video game about robots in space. Today, people really do send robots to Mars. While programming a robot
to explore the surface of Mars requires mastering software abstractions, it requires more: models of the robot’s interaction with the physical environment and methods that can work even though information is incomplete or incorrect.
Does the fact that you're using Python and robots make this course more about implementation and less about
deep ideas?
No! This course, like the existing core courses, is about fundamental deep ideas that are at the heart of EECS and
engineering in general.
How are EE and CS integrated in the class?
At the highest level, we emphasize common ideas of modularity, abstraction, and modeling. More concretely, we
write software and design algorithms to implement control systems, to solve circuit problems, and to do probabilistic robotics algorithms. We explore tradeoffs between analog and digital implementations of control systems.
What are your educational goals for students finishing 6.01?
We want our students to
Know the conceptual subject matter covered in the course
Be more adept at approaching open-ended problems, by understanding the original problem to be solved and
constructing a model of it, and then figuring out which techniques are best applied to solve it
Be comfortable writing programs, building simple circuits, analyzing simple control systems.
What are the prerequisites?
All you really need is some background in programming. A self-test and some self-study material will be made
available on the web over the summer. If you have had some programming before, working through that material
ought to be sufficient preparation. If you haven't had any programming at all, we recommend taking 6.00 first. Please note that 8.02 is a co-requisite, NOT a pre-requisite.
What are all the LAs for?
Our goal is to have lots of undergraduate lab assistants in each lab section. The LAs will typically have taken the
class in the previous year. They are there to engage with the students, asking them about solutions and approaches,
and helping them when they are stuck. This is also an educational opportunity for the LAs, who find that teaching
the material really cements the ideas for them.
How is it graded?
Each week there are pre-lab and post-lab assignments, as well as a 10-minute nano-quiz. In addition, there is a
diagnostic mid-term homework assignment and an ex camera (take-home) final exam. Criteria for passing the class
are posted at the beginning of the term. Grading is not done on a curve.