Nature of Business Systems and Data Processing. Data Models, ER Model,ER Diagrams, UML Class Diagrams. Relational model and query languages (relational algebra and calculus, SQL). Integrity and Security. Database design and normalisation. XML and XQuery. Storage structures. Indexing and Hashing Techniques. Query processing and optimization, transactions, concurrency control and recovery. Introduction to decision support and data analsis, data warehousing and data mining. Information Retrieval.
CS 317 is intended to be a first course in database systems for undergraduates in computer science. It offers students an introduction to the design and programming of database systems. In particular, we will cover the entity-relationship (ER) approach to data modelling, the relational model of database management systems (DBMSs) and the use of query languages such as SQL. We will also cover relational algebra and the use of SQL in a programming environment. We will briefly touch upon query processing and mention the role of transaction management. We will also devote a class or two to current topics of research such as XML databases, data warehousing and data mining. Topics outside the scope of this course are how to implement a DBMS, active database elements, and object oriented DBMSs.
The course achieves a balance between establishing a theoretical foundation for DBMS and pragmatic applications of DBMS in a real world environment. The course places particular emphasis on the logical design of relational database systems. A significant semester-long project reinforces lectures and is part of the lab associated with this course. In this lab, students will apply concepts presented in class and obtain practical, hands-on experience. Since students are more likely to use rather than implement database systems, this introductory course covers logical aspects of database design and implementation rather than the construction of database management systems.
The required textbook is ``A First Course in Database Systems,'' by Jeffrey D. Ullman and Jennifer Widom, Prentice Hall, Second Edition, 2002. Make sure you get the second edition of the textbook! The instructor and TA will maintain other online resources on the course webpage.
There will be 5-6 homeworks, a midterm exam, a final exam, and a semester-long group project. Both exams are closed book and closed notes. Projects, performed by groups of 2-3 students, will involve designing and programming a real-world database application from scratch. Students will do assignments related to their projects at regular intervals and turn in these assignments. Projects start with modelling a database, designing it in relational terms, loading data into a real DBMS, writing interesting SQL queries, embedding SQL queries into host language programmes, and creating feature-rich web-based interfaces to the database. Homeworks account for 30%, the project for 30%, the midterm exam for 15%, and the final exam for 25%
of the grade.
The homeworks expand on material taught in class, teach you some design and modelling, and will improve your vocabulary. Many of them will be in tune with an appropriate step of your database project. The project will help you to use the concepts learnt in realistic situations and encourage the use of programming skills in a realistic computing environment.
The course will appear deceptively simple but history shows that it is possible to get a variety of grades. The course also moves at a very fast pace and the workload is generally high! The instructor assumes that you will relish a design-oriented course and have the initiative to learn about various aspects of database design and programming. If you would like a career involving database technology (i.e., how to implement databases, not just use them effectively), you should also take a more advanced course in database system implementation or pursue a graduate program in this area. As mentioned earlier, this course does not cover these aspects.
The honour code is in effect for every aspect of this class. You are expected to do your own work. No one may give you answers to homeworks or exams. You are allowed to work on project assignments with the members of your group. In other words, students are encouraged to communicate about general principles of the course, but all assigned homework must be done on an individual basis. The instructor and the TA are available to provide any assistance that you may need. You may not exchange any code or solutions, either in pieces or in entirety, by any electronic means or hard copy.
Homework problems are often tricky and difficult. Many of them will not involve straightforward applications of concepts taught in class but will require you to apply these concepts in creative ways.
For most of the assignments, there is more than one correct solution. Therefore, solution sketches posted by the instructor cannot cover all possible answers. Keep in mind that many questions are designed to address sources of learning/design difficulties.
Since you are students at or above the senior level, you are expected to demonstrate initiative in learning the various software systems. A one-semester course such as this cannot cover all nuances, nor should you as computer science students get bogged down by the details of different implementations.