CSE 305/532 Syllabus

Spring 2021


Course Overview

Ideas related to database systems can be divided into three broad categories:
  1. Design of databases: How does one develop a useful database? What kinds of information go into the database? How is the information structured? What assumptions are made about types or values of data items? How do data items connect?
  2. Database programming: How does one express queries and other operations on the database? How does one use other capabilities of a database management system (DBMS), such as transactions or constraints, in an application? How is database programming combined with conventional programming?
  3. Database management system implementation: How does one build a DBMS or database engine, including such matters as query processing, transaction processing, and organizing storage for efficient access?

In the database design area one could study the relational model (which is the model used by the most widely adopted DBMSs) and the entity-relationship (ER) model (which is a high-level notation for expressing database design). One could learn how to translate ER designs into relational designs, and learn how to improve relational database designs through a process known as "normalization" of relations using the notion of "functional dependencies". This last item is one of the theoretical aspects of the course.

In the database programming area, one could study "relational algebra" to express the queries in the relational model. These queries will be written in SQL, which is the dominant database query language of the day. One could use JDBC to program SQL statements as part of Java programs. This could be done in a web-based client/server environment using HTML, JavaScript, Java servlets, JavaServer pages, a Java server (e.g., Tomcat), etc. A number of non-Java environments are available and one may choose to use any one of those instead.

In the database management system implementation area one could design and implement a DBMS engine considering topics such as storage management (how secondary storage is used effectively to hold data and allow it to be accessed efficiently), query processing (how queries expressed in a very high-level language such as SQL can be executed efficiently), transaction management (how to support transactions executing concurrently), etc.

Studying all three areas in depth in a semester would not be a realistic goal. However, we still need to understand all three areas in some depth and we will try to strike a good balance among the three areas with a slight bias toward designing databases. By the end of the semester you will have a good understanding of the relational data model, interface into a database, and topics related to implementing a DBMS engine.

The required text is Database Management Systems, 3rd edition, by Ramakrishnan and Gehrke (2003). We will also use Database Systems: An Application_Oriented Approach (Introductory Version), 2nd edition, by Kifer, Bernstein, and Lewis (2005) as a reference. I will list a few other references on the course web.

Prerequisites: CSE 216 or CSE 219 with a grade of C or better; CSE major. Students who do not meet the prerequisites will not be permitted to enroll in CSE 305. (Students already registered for CSE 305 who do not meet the prerequisites will be deregistered by the CS Department.)

CSE 532 students: will be given extra problems in homework assignments and in exams in addition to extra reading. When needed additional lectures may be given. Students in CSE 305 and those in CSE 532 will be graded separately.


Grading Scheme

Your final grade will be based on the following formula:

Your exam and problem set (including the final project) averages must each be at least 60%. Otherwise, your course grade will be no higher than a C-, regardless of how high your overall average is.

Makeup examinations will only be given for verified, officially sanctioned university activities. All makeup examinations may be oral.

Incomplete grades will not be given except in extreme circumstances (e.g., extended illness or family tragedy). If you have an emergency, please speak with Professor Lee as soon as possible.

Regrading

Should you discover what you think is an error in grading your work, you have exactly one week after the grades are made available to you to request a regrade - no exceptions. You should see Professor Lee during his office hours or arrange a time if you can't make it during those hours.

Once I report your final grade to the university, I will not revise it unless mistakes made by me and/or by the graders would have affected your final grade already reported.


Course Learning Outcomes


Major Topics Covered in Course


Tentative Weekly Class Schedule

See the Course Schedule page.

Programming Assignments

See the Course Schedule page.

Cooperation vs. Cheating

Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit.

When working on programming assignments, you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a programming problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.

When taking an exam, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.

We do not distinguish between cheaters who copy others' work and cheaters who allow their work to be copied.

If you cheat, you will be referred to the appropriate office at the University. If you have any questions about what constitutes cheating, please ask.


Getting Help and Information

The Announcements page will be used to make general announcements about the course.

Announcements specific to a problem set will be made in the FAQ link associated with the specific problem set. If you have a question on a specific problem set, please consult the FAQ associated with it before you fire up an email message with a question. It is likely that your question has already been answered in the FAQ.

Please check the announcements, your email, and the FAQ often. If any corrections or changes are to be made on an assignment, it will be in the FAQ link for the assignment.

I encourage you to see me when you need help, advice, or encouragement. I will always be available during my regular office hours each week, and you may also make appointments for other times. Simple questions can often be answered by phone or email.


Time Commitment

Students are often surprised by the amount of human effort that has to go into designing, writing, and testing a program. Complaints from students about the amount of time required by computer science courses are universal. You should expect to spend three hours outside of class for every hour that you spend in class. In other words, you should expect to spend nine hours per week reading, studying, and developing programs. Some of you will spend more than that. Please keep this in mind when setting up your schedule for the semester!


Students With Disabilities

If you have a physical, psychological, medical or learning disability that may impact your course work, please let the instructor know. Reasonable accommodation will be provided if necessary and appropriate. All information and documentation are confidential.


Critical Incident Management

The University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.


Last modified . . .