Database Systems (CS 457/554)
Text: | Fundamentals of Database Systems
|
| by Ramez Elmasri & Shamkant B. Navathe. |
Course Description and Objective
This course introduces the fundamental concepts of the design and use
of database systems.
We first introduce the logical and physical data independence realised
in database system and compare database systems with traditional file
processing systems.
In the comparison, we will see that database system provides greater
flexibility - at the cost of greater complexity.
Then we discuss the entity-relationship model used for
describing mini-worlds and how it can be used to design database
models.
The main focus of the course will be on relational database systems
where we will study the relational data model and the
SQL
query language for accessing the data maintained by relational
database systems.
We will also study functional dependence and
lossless decomposition as tools to design ``good'' databases.
We then present the normalization process; discussing
3NF and BCNF normalization forms
for designing good database relations without anomalies.
The latter part of the course deals with transaction processing
techniques where we discuss synchronization techniques (e.g., locking)
to ensure consistency and commit protocols/techniques to ensure
atomicity.
There will be a number of C programs and one database projects in SQL.
The SQL project consists of formulating queries on a small database
using the departmental Sybase relational database system.
The Midterm & Final examinations are open notes/book exams where
the majority of the questions test students on their knowledge
of the subject,
i.e., whether you know material.
The solution to some question in the exams will require some
synthesis thinking , i.e.,
using what you (already) know to solve a new problem.
CS554
Students that are enrolled in the graduate version of this course
must do all work in the undergraduate version and in addition,
perform a (very intensive) programming project.
In this project, you will learn how to implement
a (small) database processing system.
This project is very hands-on and there are no lectures given
for this project.
All the necessary technical details will be given in the handouts -
much of these technical details are covered in the "Compilers" course,
so students that have done "Compilers" should have no problem
doing this project.
Students that do not have had a "Compilers" course can study
the project handouts and learn the necessary technqiues.
Grading in CS457/CS554
-
Your grade will be solely based on the scores you received
in homework & project assignments, and midterm & final tests.
The grade is not based on "how much effort you put in the course".
It is like running the engine of a car on full speed but having
the transmission on neutral will get you no where fast,
working hard but not understanding the material will not
get you a good grade in this course.
The key is understanding the material taught.
-
Homeworks and projects are to be treated as examinations
and are expected to be your individual work.
Under no circumstance should you show another student your answer
and program, even after the due date - some students may have
received special permission to turn in late.
Read the policy statement concerning programming assignments
at the end of this sylabus.
This policy applies to homework assignments as well.
-
The midterm and final examinations are open
notes/book exams where
the majority of the questions test students on their knowledge
of the subject, i.e., whether you know material.
The solution to some questions in the tests will require some
synthesis thinking , i.e.,
apply what you know to solve a new problem.
-
If you have any problems with the examination schedule (other than
that you have to leave for home early), please let
me know immediately so I can make up an
examination for you to take on a mutually agreeable date.
The date will be one before the scheduled exam date
- that's my policy for individual tests and I will not deviate from it.
Class Policy
Statement of Policy on Computer Assignments
Students will be graded partially on the basis of their
programming assignments. These programming
assignments are to be treated as examinations, and are
expected to be your individual work. While
discussions with other students in the course may be
permitted or encouraged by your instructor, you
should write your program yourself. The mathlab
representatives are available to explain error messages,
discuss briefly technical details with which you may
not be familiar, and give short suggestions as to how
you might detect logic errors. The reps should not,
however be asked to write part or all of your program.
Your instructor (and any teaching assistants assigned to
the course) will be glad to help you to the extent
that he or she feels reasonable.
Submissions based on other students solutions in prior
offerings of the course specifically violate these
guidelines, as do submissions prepared with the help of an outside "tutor".
You should take precautions to protect the confidentiality
of your work: preserve the secrecy of your
password, do not make files or directories sharable,
pick up your printouts promptly and dispose of
printouts where they will not tempt other students.
All work should be done either in the class directory of your ITD account
(preferred) or in your "priv" directory (only if you do not have
a class directory).
All submissions should include a comment statement near
the top of the program of the form:
THIS CODE IS MY OWN WORK, IT WAS WRITTEN WITHOUT CONSULTING
A TUTOR OR CODE WRITTEN BY OTHER STUDENTS - your name
Cases of apparent plagiarism or collusion will be referred
to the Honor Council.
Syllabus