Off route 143 in Gotland.  Sweden.

Software Engineering for Internet Applications (6.171)

part of Teaching by Philip Greenspun

The Strip.  Las Vegas, Nevada. This is a course for students who already have some programming and software engineering experience, e.g., at MIT the prerequisite is 6.170, Laboratory in Software Engineering. In 6.171 we try to give students some experience in dealing with those challenges that are unique to Internet applications: The bottom line: we want one someone who has finished this course to be able to build amazon.com, eBay, or photo.net by him or herself.

This is a laboratory course where most of the learning occurs during the completion of problem sets. Students organize into groups of 2-4 for the purpose of building an online learning community. Each problem set is devoted to adding features and capabilities to the online community. We encourage students to work with a real customer or client. Good sources of clients for online communities include organizations that want knowledge sharing systems (intranets) and non-profit organizations that wish to operate a public online learning community within their area of expertise. Students who themselves have a passion for a particular topic sometimes build an online community in that area.

Practical Stuff

Student groups are free to choose any set of programming tools that will get the job done. The only requirement imposed by the course is that the source of persistence for the community be an ACID-compliant relational database management system (RDBMS). Examples of such systems include Microsoft SQL Server, Oracle, and PostgreSQL (free and open-source). Students are free to choose an operating system, a Web server, and a procedural programming language for page development.

Regardless of programming tools chosen, every student in 6.171 will get experience with Internet standards such as HTTP, HTML, WAP, WML, and VoiceXML. Every student will learn how to use the RDBMS and SQL programming language. Every student will learn how to build distributed computing systems with standards such as SOAP and WSDL.

Prerequisites

Joy of Coffee.  Temple Bar. Dublin, Ireland. This is a senior-level class at MIT where we expect the average student to be working on a bachelor's or master's degree in computer science, to have taken our introduction to computer science (6.001), to have taken our core software engineering class (6.170), and to have done at least some programming during summer jobs.

That said, the class does not require any knowledge of particular computer languages or systems. I.e., the students will learn enough about the required tools as the course progresses.

Basic Course Structure

Cooling water flowing out of the Vermont Yankee nuclear power plant and back into the Connecticut River.  These concrete structures are designed to aerate the water and make it more useful to the life of the river.  Vernon, Vermont.

Problem Sets

Basics: more or less the old pset 1 but remove references to specific
technologies and put those into a supplement.  On MIT calendar: 1.5
weeks.

Global Competitive Analysis: write down some usage scenarios and work
through them on some other sites on the Internet that have similar
objectives.  On MIT calendar:  0.5 weeks.

User registration and management.  Support grouping of users.  Include
the issue of whether or not to implement a party system.  On MIT
calendar: 1 week.

Content management.  Need to capture authorship, approval, moderation,
reference ("X is a comment on Y" or "A is a reponse to B").  On MIT
calendar: 2 weeks.

Software Modularity.  Need a way to group all the code for a module,
record the docs, publish APIs to other parts of the system, read
configuration parameters.  On MIT calendar: 1 week.

Discussion.  The most basic Web service, built on top of the content
management system.  Support categorization, moderation, breakout and
reassemble.  Include a user test.  On MIT calendar: 2 weeks.

WAP and voice interfaces.  Build a WAP interface that lets someone on
a mobile phone participate in the community.  Build a voice interface
that lets someone on a regular phone participate in the community.  In
2001 this will most likely use VoiceXML and the tellme.com
infrastructure, though it would be nice to use a more sophisticated
conversational system such as LCS JUPITER. On MIT calendar: 1 week.

Distributed Computing.  The world of Web services.  Introduces standards
such as SOAP, WSDL, and UDDI.  On MIT calendar: 1 week.

Scaling gracefully.  Geospatialization.  An "interesting person"
system.  On MIT calendar: 1 week.

Full-text search.  On MIT calendar: 1 week.

Personalization.  Users picking subject areas of interest,
categorization of content.  Then getting more advanced with full-text
comparison tools to measure similarity and dissimilarity to items
previously marked by a user as good or bad.  On MIT calendar: 1 week.

Goodbye to all that (manual coding).  Autogeneration of data model and
user experience scripts.  Either building a structured knowledge
management system within the subject area of the site (a la problem
set 4) or finding some similar challenge that is idiosyncratic to the
service being developed.  On MIT calendar: 1 week (make it a bit
easier than the old pset 4).

Writeup.  A final overview paper with screen shots illustrating the
most important aspects of the Web service built.  Designed to be no
more than 5 pages; one continuous Web document that can be entirely
consumed by scrolling.  

Exams

The course includes an easy mid-term and a more difficult final exam. The exams concentrate on ability to think critically about the user experience plus some RDBMS fundamentals and data modeling skills.

Textbooks

The required textbooks for the class are both available online: If you are using the Oracle RDBMS, we strongly urge you to purchase Oracle9i: The Complete Reference (or an updated version if available). The official Oracle RDBMS documentation is available at otn.oracle.com (registration free but required). We particularly recommend the Application Developer's Guide. However, the rest of the Oracle docs are often too detailed for beginners, which is why the Oracle Press Complete Reference is so useful.

We also recommend Visual Explanations : Images and Quantities, Evidence and Narrative (Edward Tufte 1997; Graphics Press).

Adoption by Universities and Companies

Entrance to University of California, Berkeley campus. This course is designed for easy adoption by other universities. We provide the following materials online for free: You may wish to provide a computing environment for your students. Students have been most successful using either Microsoft .NET (Windows 2000 only; one machine per student) or AOLserver/Oracle (a single pizza box Unix machine can support 10 students).

Course History

This course was developed by Hal Abelson (hal@mit.edu), the late Michael Dertouzos, and Philip Greenspun (philg@mit.edu). Bottom line: about 1000 CS majors have gone through this curriculum and all but about 30 have become competent database-backed Web service developers. A more detailed history and explanation of this course is available from http://philip.greenspun.com/teaching/teaching-software-engineering.

Ancient History: if you came here looking for links to the old problem sets and texts, please visit http://philip.greenspun.com/teaching/old-one-term-web-6916.

Ongoing Glory

Here are some examples of good things have happened in or because of 6.916/6.171: A reasonably complete list of old projects is available at http://philip.greenspun.com/internet-application-workbook/writeup. In addition to continuing public sites, 6.916/6.171 has also produced a few startup companies as students who took the course together continued their collaboration in industry. [Of course, that was in the go-go years of the Internet; now most of the students graduate and take jobs at IBM, Microsoft and Oracle.]
philg@mit.edu