Site Home : Teaching : One Course
This course teaches people the following:
- why the relational database management system (RDBMS) is the
foundation for most multi-user Internet applications, e.g.,
Amazon.com, and for most business information systems
- how to write programs in SQL, the standard declarative
language supported by nearly all RDBMS products
- a bit about the internals of the RDBMS and how popular
systems, such as Oracle, manage the challenge of processing updates
from hundreds of simultaneous concurrent users
- the differences in capabilities among RDBMSes, including
MySQL, PostgreSQL, and Oracle
- at least one way to connect an RDBMS to a Web server
- how to build a multi-user application for Android smartphones
- how to build an HTML5 quasi-application for iPhone smartphones
- the limitations of the traditional RDBMS and some new/experimental approaches to escaping from those limitations
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:
Rationale
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.
philg@mit.edu