|CPSC 343||Database Theory and Practice||Fall 2004|
Information is the currency of the Information Age, but having vast quantities of information is useless if you cannot quickly locate the relevant data. Computer databases are used to store, organize, and retrieve information in a useful way. Databases are extremely common, particularly in conjunction with Web sites - if you've ever used amazon.com, eBay, or HWS' library catalog (to name just a few sites), you've interacted with a database.
The goal of this course is to provide an introduction to the theory and practice of relational databases. Three major aspects of relational databases will be addressed: designing, implementing, and querying a database; building a Web site which interacts with a database; and understanding how database systems store and process information reliably, securely, and efficiently. Both practical skills and the necessary theoretical underpinnings will be emphasized.
M 1:30-2:30pm, T 2:30-3:30pm, W 4:00-5:00pm, F 9:30-10:30am
|Class Hours and Meeting Place||
Lecture/discussion MWF 3:00-3:55pm, Lansing 300
Some meetings will be in the Lansing 310 computer lab; these will be announced in advance.
|Course Web Page||
You are expected to regularly consult the course web page for announcements, assignments, and most handouts.
Database Management Systems, 3rd edition
Additional material will be handed out or posted on the course webpage.
CPSC 225 and CPSC 229
This course, like the other 300- and 400-level computer science courses, explores a particular subdiscipline of computer science. Many aspects of modern society and commerce involve the management of large quantities of data, so databases are a crucial component of computer systems. Furthermore, the study of database systems brings together many areas of computer science (theory, data structures, algorithms, parallel computing, user interfaces, and more); it is particularly nice as an application of theoretical computer science topics.
By the end of the course, the successful student should be able to:
|Course Content Overview||
The course material will cover three major aspects of relational databases: designing, implementing, and querying a database; building a Web site which interacts with a database; and understanding how database systems store and process information reliably, securely, and efficiently (database management systems). The objectives listed below paint - in broad strokes - what the successful student should be able to do at the end of each section.
Designing, Implementing, Querying a Database: The focus of this section of the course will be on the skills needed to effectively design and use a relational database system such as MySQL. Specific topics include the entity-relationship (ER) model for data modeling, the relational database model and its theoretical underpinnings, and the SQL query language for defining data models, setting constraints, and querying the database.
Database Applications: This section of the course will emphasize practical skills - how to build an application which makes use of a database as part of processing. The particular focus will be on Web applications. Various technologies will be introduced, including HTML, PHP, JDBC, servlets, and JSP.
Database Management Systems: The last portion of the course will look at the software systems that make databases happen - the database management systems themselves. The goal is to make the student an informed user of database management systems by understanding what affects performance, how to achieve reliability and security, and what control the database administrator/user has over these factors. Specific topics include file structure and data storage, indexing, query evaluation, transaction management, reliability, and security.
|Assignments and Evaluation||
Exams: There will be two midterm exams and a final exam. The midterms will have an in-class component (closed book, closed notes) and a take-home component (open book, open notes) which will be handed out the day of the in-class part and due several days later. The final will be entirely in the scheduled timeslot. The final will be cumulative, but will have a somewhat greater emphasis on material covered after the second midterm.
Homework: Homework will be assigned most weeks, usually on Monday or Wednesday, and will generally be due one week after they are assigned. Some class meetings will take place in the lab, and finishing these lab assignments outside of class will be part of your homework (since it is likely that you will not have time to finish the entire exercise during the lab).
Project: A major component of the course will be a term project in which small groups design and implement a database-driven website. There will be deadlines for intermediate phases of the project throughout the semester. Except in unusual circumstances, all members of the group will receive the same grade on the project.
Attendance and Participation: You are expected to attend and participate in class. Attendance will be taken regularly, and more than one unexcused absence will lower your final grade. (Note that "unexcused" does not mean "didn't provide an excuse", but rather "didn't provide a sufficiently good reason". Things like being too busy or oversleeping are not good reasons.) "Participation" means that you are engaged in class - you are not expected to volunteer for everything, but you should contribute to the class in a meaningful way multiple times throughout the semester.
Grades: Grades in this course will be computed as follows: