This is a course from a previous year. View the current courses

A modern database system is a collection of interrelated facts recorded on digital media and a set of computer programs to access those facts. In the 21st century, databases have become ubiquitous via the Web and “cloud computing” to the point that users may not even realize where their data is stored, how it is accessed, and who has access to it. This course attempts to shed light on why and how our society has become so dependent on information-processing by examining software (and, to a lesser extent, hardware) techniques that lead to the efficient storage and retrieval of information. We will illustrate these principles by designing databases using open-source platforms (such as MySQL) and by designing Web sites to manipulate those databases using client-side technologies (such as HTML, CSS, Javascript and AJAX) and server-side programming languages (such as PHP and Python). Major topics include relational database design, query languages (such as SQL, XQuery and XSLT), the object-relational model, ACID properties, and the client-server paradigm. Each student will be responsible for designing and implementing a Web-accessible database application of her or his choosing, using open-source database software and a Web-application programming language such as PHP, Python, or Ruby. Students will work on their projects throughout the course and will demonstrate them to the rest of the class at the close of the semester. We will also consider Web-application frameworks such as Ruby on Rails and Django. In addition to regular reading assignments, there will be several problem sets and short programming assignments. There will also be a more substantial programming assignment used to illustrate issues pertaining to the practical implementation of database systems. Suggested conference topics include data mining, database privacy, geographical information systems (GIS), and the implementation of a miniature database system. Permission of the instructor is required. Students should be familiar with the basics of HTML and have at least one semester of programming experience.