Instructor Insights

Shifting to a Practice-Theory-Practice Approach

In this section, Professor Dennis Freeman discusses how the electrical engineering and computer science curriculum was reimagined in the early 2000s in a way that led to the development of a practice-theory-practice approach to teaching 6.01 Introduction to Electrical Engineering and Computer Science I, one of the department’s core courses. He shares how the transition to this new teaching approach took several years. Although there has been some resistance to this kind of learning experience, nearly two-thirds of MIT students now take 6.01, marking it as an extremely popular residential course.

Reimagining the Curriculum

When Rafael Reif was the Department Head of Electrical Engineering and Computer Science (EESC) in 2004-2005, he established the Curriculum Initiative Committee. The purpose of the committee was to look at our curriculum, which had been in place since 1975, and make recommendations to improve the curriculum—with an eye to the future.

At the time, the core curriculum had four pillars: Computer Programming; Circuits; Signals and Systems; and Computer Architecture. Everybody in EECS had to take all four of these courses. Although the committee found this was a very solid group of subjects, many new topics had emerged in the field since 1975 that the four courses didn’t address. Adding a fifth course to address these emerging topics at the foundational level wasn’t feasible because there was, and continues to be, an institute cap on how many subjects can be required in a student’s major. If we added more courses as electives, students would need to choose some topics over others. If they had to choose, we would need to prepare students so that they could make rational choices.

"[I]t’s been a process to shift the teaching model toward a hands-on approach, such that most of the learning happens in the lab."
—Dennis Freeman

This thread of reasoning led to the idea of having two new courses, 6.01 Introduction to Electrical Engineering and Computer Science I and 6.02 Introduction to EECS II: Digital Communication Systems, which would be introductory and span the topics formally offered in the four main courses. Our hope was that these two courses would expose students to foundational topics in electrical engineering and computer science and, at the same time, would provide students with a basis for choosing among a wider range of courses that would include emerging areas.  

We also hoped that these introductory courses would provide students with more meaningful learning experiences. Previously, the curriculum had been taught in silos. Students learned a lot of facts, but had very little experience seeing how the facts connected across the silos. We also understood that many of the facts we would teach would become obsolete by the time students entered the field; the ability to deeply understand how fundamental ideas in EECS shaped and influenced each other would not. We opted to teach fewer facts in favor of helping students understand how computer programming, circuits, signals and systems, and computer architecture interconnect.

Teaching Differently

Having decided to expose students to multiple topics in 6.01 Introduction to Electrical Engineering and Computer Science I, we also considered whether there might be some advantage to teaching those topics differently than we had in the past. We had new opportunities to bring techniques in one area to bear on others. For example, we could solve circuit problems using computation, or apply feedback theory to understand the behavior of circuits. We could also expose students to a problem in the lab before getting deeply into the theory in lecture. That was the origin of our practice-theory-practice approach.

At the time, there was already cognitive literature suggesting that students learn new ideas better when they have exposure to authentic problems where the ideas are useful. In particular, the literature recommended showing students the problem and letting them work on it a bit, teaching them the related theory, and then letting them work the problem again. This approach aligned well with our desire to have a more hands-on contextualized introduction to electrical engineering and computer science.

Encountering Resistance

Students build mobile robots during the design lab sessions.

It took us a few years to develop our practice-theory-practice approach—it definitely didn’t come overnight. In fact, it’s been a process to shift the teaching model toward a hands-on approach, such that most of the learning happens in the lab. It’s been hard to get the faculty on board with this shift. Some of our most effective lecturers have commented, “I don’t want to teach this course because there’s no teaching,” which is completely wrong. Usually by the time they’ve done it a few times, faculty realize that they’re actually imparting a lot more knowledge by facilitating hands-on learning than they would solely by lecturing. There’s a misconception on the part of “broadcast” lecturers that if they say it, students will understand it. That’s so wrong.

It’s also been hard to get the students on board with our hands-on learning approach. There was pushback against the four and a half hours of lab. Students prefer to sit quietly in the back of the classroom, take notes, go home, not be bothered, and then study for exams. But there’s really good evidence that that’s not the way to optimize learning. I’m convinced that the practice-theory-practice approach is much more effective than the “broadcast” method for helping students learn the content we teach, but learning is not easy, so people resist. That’s a truism that people don’t like to admit: learning is hard.

Even though there was, and continues to be pushback, the course is now extraordinarily popular. Two-thirds of MIT students take 6.01 Introduction to Electrical Engineering and Computer Science I. EECS is a big department, but it’s not two-thirds of the Institute. That means a large fraction of students taking the course have no intention of majoring in electrical engineering or computer science, but still want to take the course. We attract a lot of students who simply want to have the kind of exposure to the field that we offer. By taking the course, they find out what programming is like. They find out what circuits are like. They find out what feedback is all about. They find out how an understanding of probability can make them better designers. They get a broad exposure to the field, informed by hands-on experience, and that makes it very popular.

Learning Resource Types
Lecture Videos
Recitation Videos
Problem Sets
Exams with Solutions
Lecture Notes
Instructor Insights
Programming Assignments
Exams