Lecture Notes



Name Office Phone Email Office Hours
Xiannong Meng Dana 212 570-577-1214 xmeng Check here

Course Outcomes

After completing the course, students will be able to
  1. explain the fundamental concepts of databases;
  2. design basic databases for data sets of various sizes;
  3. use programming languages such as SQL to create and manipulate databases to solve practical problems.

Class Meetings

Class meets on Monday, Wednesday, Friday 10 -- 10:52 am in Dana 213.


The required textbook is A First Course in Database Systems 3rd ed. by Jeffrey Ullman and Jennifer Widom.

We will also draw information from another classic database textbook, Database Systems: The Complete Book by Hector Garcia-Molina, Jeffrey Ullman, and Jennifer Widom.


Students are expected to actively participate in the learning. Discuss topics and their related contents in the class. Ask and answer questions. Finish homework and projects on time. Complete any reading assignments by the due date. Be prepared to discuss the reading material in class. Readings are listed on the course schedule. In particular, students are expected to pursue information on their own when there are questions or issues. Students are encouraged to come to the office hours of the instructors to discuss course related questions.

Courses at Bucknell that receive one unit of academic credit have a minimum expectation of 12 hours per week of student academic engagement. (See this page for details.) Student academic engagement includes both the hours of direct faculty instruction (or its equivalent) and the hours spent on out of class student work. This course meets three hours a week so you should expect to spend at least nine hours a week working on it outside of class.

Course Description

The following are the major topics to be covered in the course.

SQL (Structured Query Language) We will learn the SQL programming language that is used to create, maintain, and manipulate a database. We will be using sqlite, a server-less version of SQL that works on stand-alone computers.

Relational model There are many ways to organize a database. Relational database is the one we will concentrate on the most. In relational databases, the datasets are organized as a collection of tables, each row in a table is a piece of data. The data sets are related through keys, columns in the table that can identify each piece of data in the database. We will explore other examples of organizing database that work with non-structured data such as MongoDB, time permitting.

Design theories of relational database Databases are not simple collections of data (or tables). To build a good database, one must design the database in such a way that there is minumum redundancy, yet that every piece of information is accessible at a lowest cost possible. Achieving such a goal requires us to follow some design principles and theories when building a database. We will learn the basics of these theories and how they are applied to designing our databases.

Views and index The ultimate use of database is for users to retrieve or otherwise manipualte the data. We will study how a database can present its data to the user and how index plays a role in the process. We will also study the relation between views and index.

Some database internals In addition, we will study some implementation issues of databases such as indexing, I/O issues, external sorting. As a compute scientist, not only do we need to know how to build and manipualte database with languages such as SQL, but we also need to understand how database is built at its lowest level. We will touch some of the topics.

Locations for Course Information

The course uses various sites for contents and management. Please visit these sites often, e.g., daily.


The course grade consists of the following components.

Professionalism and engagement 8%
Projects and HW 26%
Quizzes 8%
Class activities 8%
Mid-term exams     30% (15% each)
Final exam 20%

Total 100%

Professionalism and Engagement

Professionalism is defined by many criteria, most of which are common sense and common courtesy rules. As a general guideline, behave as you would in your dream workplace. To encourage a professional, respectful atmosphere that is conducive to maximal learning in the classroom:

Actively engaging in class by asking and answering questions is probably the best way of learning. Try not just to sit there and listen.

Projects and Homework

There will be two programming projects during the semester. One is a semester long project to design and implement a database in SQL using a set of real data. The second one is related to database implementaiton using a data structure such as B+ tree. These projects are done in teasm of two to three students.

There will be a few sets of homework that involves small programming in SQL or written homework. Homework is done individually.


There will be regular announced quizzes given on Moodle during the first 10 minutes of lecture. Do not be late or you will not have adequate time to complete your quiz. They will cover reading or lecture topics. There will be no make-up quizzes.

Class Activites

There will be frequent in-class activities in which student work in small groups to discuss and complete the given assignments.


There will be two mid-term exams and one final exam. The dates for the mid-term exams are published in the course schedule. The final exam is at the time specified by the university. The mid-term exams are sectional, meaning they cover the contents between the exams. The final exam is comprehensive.

If you need special accommodation for exams, you must notify the instructor at least one week before the exam with sufficient evidence, e.g., letter from the Office of Accessibility Resources.

Last modified: Mon Jan 08 13:20:55 EST 2018