Relational Database Management System and Internet application programming

a three-day course designed in January 2011 by Philip Greenspun, Andrew Grumet, John Morgan, and Shimon Rura

Site Home : Teaching : One Course

This course teaches people the following: Intended audience: People with some programming background, but not in any specific language or with any specific tools. Each student brings his or her own laptop and installs a virtual machine on it. We highly recommend that students try to get this working before the course starts and/or that you bring DVD-ROMs and USB sticks containing the VM to the classroom; 2011 university networks are not up to the task of distributing 2.7 GB files and even unzipping takes a fair amount of time on a typical student-owned laptop.

Intended format: A TA'd laboratory environment, with short introductory explanations by a teacher followed by students working independently at their laptops, getting assistance as required from fellow students and/or instructors.

The course has been successfully taught on multiple occasions, starting with January 2011 at MIT, to learners without much programming background. We strongly recommend using Google Docs for in-classroom support.

Course Materials

Solutions: Supporting Tutorials: Supporting Code:


Why did we choose MySQL when, as of 2011, it does not fulfill the minimum requirements for an RDBMS as set forth in 1970 by E.F. Codd (e.g., MySQL will not enforce CHECK constraints)? MySQL is popular and it gives us a chance to show students where the pitfalls are in using such a weak tool. The course would probably work just as well if taught with Oracle, PostgreSQL or some other more capable system.

Why the virtual machine rather than configuring a server to which all students ssh? It cut our sysadmin effort and enables students to continue with their work at any time and in any place. The Android phone emulator took as long as 10 minutes to load. Remember that a student would be typically be running Windows on his or her laptop. On top of that would be running our Linux virtual machine. On top of that would be running the Android operating system... i.e., one more layer of Linux. Virtualization turns out not to be free!

Why do we have students do Android rather than iPhone development? Fewer than 10 percent of students have Macintosh computers, a prerequisite for using the iPhone development tools. No student in our class had any experience with Objective-C, the iPhone application development language, whereas many had at least some experience with Java, the Android application development language. Assuming a student had a Macintosh laptop, getting an application to a physical device with iPhone would require students to pay Apple $200, wait for approval by Apple Employees, and then "buy their own app" from the Apple store. Physical Android phones were much more common among our students than iPhones and moving a developed application to a device is as simple as plugging in a USB cable while Eclipse is running. [Note that the Day 3 problems do include an iPhone HTML5 pseudo-application development project.]

To do list

Since people in the class move at different paces, each section needs to have "basic" and "extra credit" problems. This will keep the faster students from waiting idly while the slower students finish.
Course materials are copyright 2011 Philip Greenspun, but freely available for use by other universities and for individual use. We ask only that you don't republish this material on the Web, as that will confuse search engines.