These are the notes for a talk that I’m giving tomorrow at Makerere University in Kampala, Uganda. I’m posting them here because it is a convenient way to write and others might find these interesting.

I’ll talk about MIT because that is where I have the most experience teaching.

MIT operates the same way that it did upon opening in 1865: two semesters with long vacations in between; students do most of their learning in take-home problem sets (6-9 hours/week/course) for which they get some inspiration in lectures (2-3 hours/week); evaluation/grading is done by the same people who are teaching/coaching.

The calendar was designed for rich families. You want your kid available in the winter so that you can take him down to your estate in Florida. You want him free to accompany you on a Grand Tour of Europe during the summer. In 2007, however, most college students are from middle-class families. Why would you want to pay for the kid to attend four years of college, plus spring break trips to Mexico and summer vacations, when a bachelor’s degree could be obtained in 2.5 years on a normal 48-week/year work schedule?

How about lectures? You need to broadcast some information to 100 people. Printing was expensive and cumbersome in 1865. Telephone, television, and Internet did not exist. A lecture was probably indeed the most efficient way of getting some information to a large group, despite the fact that humans can read 3X faster than they can listen.. Compare to 2007, however, when you could simply email a list of those 100 people or provide them with a URL.

Why did people come to lectures in 1865? Their lodgings weren’t centrally heated and the temperatures in Boston can get down to -10C. Many came to get warm. They had no television, no radio, no Internet, no email, no instant messaging, no mobile phone. Many students came to lecture for entertainment.

What about homework? Students would do homework either in the library or at home. In 1865 both places lacked television, video games, email, etc. In 2007, the students who do best may be the ones with the best study habits, not those who are the most able. Companies do not rely on lecture+homework for getting work done; they create an environment with limited distractions and keep workers there for most of each day.

Evaluation and grading in 1865 was done by the teachers. This is an invitation to dishonesty since you are always tempted to give students As, but there was little alternative since student work was not easily accessible to others. In 2007 in most areas of academia, student work can be viewed just as easily by someone on the other side of the planet as by the teacher. If we want to ensure quality and that students always regard us teachers as allies, why would we want to be involved in evaluation?

How well does the MIT system work? It should work pretty well. We have some of the best and most energetic lecturers in the U.S. Lectures are generally kept to 50 minutes (more than double the limit established by education researchers). The lectures are demanding; if you tune out for 5 minutes, you will have a lot of trouble catching up. Professors do not put up PowerPoints and read them bullet by bullet. Homework assignments are weekly in most courses and are extremely demanding. The students are among the most able and best-prepared in the U.S. Yet when you ask graduates in CS what percentage of their classmates are capable of programming and what percentage they would enjoy working with, the answer is usually 25-30 percent. People who studied poetry, physics, or civil engineering are often better software engineers than an MIT CS graduate (contrast with medicine; not too many good doctors out there who skipped med school). A MIT student graduates ready to work for an engineer, not to be an engineer. Not too impressive considering the near-$200,000 cost and the abilities of the incoming students. (And the problem is not always fixed on the first job; companies tend to give junior engineers a tiny piece of a big problem, not a small problem to solve by themselves).

6.171: Software Engineering for Internet Applications. This is a one-semester attempt to address the deficiencies in the rest of the curriculum. What do we try to teach in 13 weeks?

object-oriented design where each object is a Web service (distributed computing)

about concurrency and transactions

how to build a stateful user experience on top of stateless protocols

about the relational database management system (there is no DBMS course at MIT)

how to work at every stage of the engineering life cycle: listen to a vague request, write down a precise spec, build a prototype, document for other programmers, test with users, refine, launch, refine, document for decision-makers

How does it work?

Students organized themselves into teams of 2 (ideal) or 3 (acceptable) and are connected with a real-world client.

Lecture time is devoted to teams presenting either designs or prototypes and the other teams criticizing. This prepares students to participate in engineering design reviews. If nobody makes a suggestion I consider important, I will make it myself at the end of a review or via email to the class mailing list after class. If I have something that I want everyone to know, I add it to the online textbook or email it to the class prior to meeting.

Occasionally we will use the meeting time for teams to work together (sometimes paired with another team) on a data modeling challenge. This works great in rooms with a lot of blackboards and after 20 minutes we start asking teams to present their work while others criticize and comment.

Most evaluation is done by the clients (usually non-technical), professional interface designers whom I bring in, and professional software engineers whom I bring in as mentors and critics. The final presentation and write-up is evaluated by a team of business executives and venture capitalists; students are told to pitch the project as though they were seeking follow-on funding.

How well does it work?

Students report that this was the most useful class at MIT

Most graduates of the course ended up getting the jobs that they wanted, usually at Microsoft or Google (though the ones who went to Microsoft subsequently quit to work for Google)

Example projects: http://philip.greenspun.com/seia/gallery/spring1999/arfdigita/ and http://philip.greenspun.com/seia/gallery/fall2003/entclub/

Conclusion:

Lecturing has been found to be extremely ineffective by all researchers. The FAA limits lectures to 20 minutes or so in U.S. flight schools.

Lab and project work are where students learn the most. The school that adopted lab/projects as the core of their approach quickly zoomed to the first position among American undergrad schools of engineering (www.olin.edu).

Engineers learn by doing progressively larger projects, not by doing what they’re told in one-week homework assignments or doing small pieces of a big project

Everything that is part of a bachelor’s in CS can be taught as part of a project that has all phases of the engineering cycle, e.g., teach physics and calculus by assigning students to build a flight simulator

It makes a lot of sense to separate teaching/coaching from grading and, in the Internet age, it is trivial to do so. Define the standard, but let others decide whether or not your students have met the standard.

A student who graduates with a portfolio of 10 systems, each of which he or she understands completely and can show off the documentation as well as the function (on the Web or on the student’s laptop), is a student who will get a software development job.

More: