General Information


Professor: Brad Vander Zanden

Required Textbook

Database Systems: A Practical Approach to Design, Implementation, and Management, 5th Ed. by Thomas Connolly and Carolyn Begg.

Reference Books

There are no required textbooks for the scripting portion of the course. Most of the assigned readings will be from or my own personal notes. However, here is a list of good introductory books for the languages that we will be covering in the course:

  1. Beginning Perl by Simon Cozens. Free online reference.
  2. Perl in 24 Hours. Clinton Pierce. Sams Publishing.
  3. Learning Perl. Randal Schwartz, Tom Phoenix, and Brian D Foy. O'Reilly.
  1. Learning Python, by Mark Lutz and David Ascher. O'Reilly.
  2. Programming in Python 3 (2nd Ed or higher recommended). Mark Summerfield. Qtrac Ltd.
  3. Dive Into Python. Mark Pilgrim. Free online reference. A bit dated, since the last modification was May 2004, but still a good book for core Python concepts.
  4. Dive Into Python 3. Mark Pilgrim. 2011. Free online reference.
XMLSams Teach Yourself XML in 21 Days by Steven Holzner. Free online reference.

Please note that these scripting languages are constantly evolving and that the reference texts are published in new editions fairly often. Hence you should always make sure that you are getting the latest edition of the reference text.

Course Description

This course provides a practical introduction to databases and scripting languages. Databases are widely used to structure and retrieve data. This course will focus on the most common type of database, called a relational database. We will explore the use and design of relational databases using the public domain database language mySQL and we will also explore some of the theory that supports the relational database model. We may also spend a short amount of time on object-oriented databases, which are emerging as a competing paradigm for handling data that is less well structured. While we will start the course by showing you how to use a database, the bulk of the database portion of the course will cover how to design a database.

The second half of the course will be devoted to scripting languages, with the focus primarily being on Perl and Python. We will first examine their language design and how they differ from traditional, compiled languages. We will then examine different applications areas for scripting languages, including data extraction, report generation, web programming, database management, and graphical interfaces.

Because of the limited time available during the semester the intent of the course is to give students a basic understanding of databases and scripting languages. This foundation should give students a good working familiarity with each of the languages and allow them to accomplish many of the tasks for which the languages are designed. For students interested in developing a deeper understanding of web programming and scripting languages, I occasionally offer a scripting languages and web programming course as CS460/565.

Course Prerequisites

  1. CS311: Relational databases are based on the notion of relations and sets, so it is important to have the mathematical background from CS311 in order to understand relational algebra and relational calculus, which forms the theoretical basis for relational databases.
  2. CS365: CS365 provides an introduction to Java and sometimes to scripting languages. I will briefly discuss Jython, which is a Python variant that works with Python. I will not assume that you have had a prior exposure to scripting languages however, as it may or may not be covered by your CS365 instructor. I do not consider CS365 to be an important pre-requisite for CS465.


For Undergraduates

For Graduate Students (CS565)

Grading scale is same as for undergraduates.

Missed Exams

Should you miss an exam without a valid excuse, you will receive an average for the remaining exams and a one letter grade reduction in your final grade. For example if you would have received a B+, you will now receive a C+.


Data Modeling


Learning Objectives

  1. Categorize data models based on the types of concepts that they provide to describe the database structure-that is, conceptual data model, physical data model, and representational data model.
  2. Describe the modeling concepts and notation of the entity-relationship model and UML, including their use in data modeling.
  3. Define the fundamental terminology used in the relational data model .
  4. Describe the basic principles of the relational data model.
  5. Illustrate the modeling concepts and notation of the relational data model.



Learning Objectives

  1. Generate an index file for a collection of resources
  2. Explain the role of an inverted index in locating a document in a collection
  3. Explain how stemming and stop words affect indexing
  4. Identify appropriate indices for given relational schema and query sets
  5. Estimate time to retrieve information, when indices are used compared to when they are not used

Relational Databases


Learning Objectives

  1. Prepare a relational schema from a conceptual model developed using the entity- relationship model
  2. Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including definition of the concept of a foreign key).
  3. Demonstrate use of the relational algebra operations from mathematical set theory (union, intersection, difference, and cartesian product) and the relational algebra operations developed specifically for relational databases (select (restrict), project, join, and division).
  4. Demonstrate queries in the relational algebra.

Relational Database Design


Learning Objectives

  1. Determine the functional dependency between two or more attributes that are a subset of a relation.
  2. Connect constraints expressed as primary key and foreign key, with functional dependencies
  3. Compute the closure of a set of attributes under given functional dependencies
  4. Determine whether or not a set of attributes form a superkey and/or candidate key for a relation with given functional dependencies
  5. Evaluate a proposed decomposition, to say whether or not it has lossless-join and dependency-preservation
  6. Describe what is meant by 1NF, 2NF, 3NF, and BCNF.
  7. Identify whether a relation is in 1NF, 2NF, 3NF, or BCNF.
  8. Normalize a 1NF relation into a set of 3NF (or BCNF) relations and denormalize a relational schema.
  9. Explain the impact of normalization on the efficiency of database operations, especially query optimization.



Learning Objectives

  1. Describe common uses for Perl scripts
  2. Write Perl scripts that use regular expressions to extract information from a file and generate reports
  3. Write Perl scripts that use regular expressions to type check information from html forms
  4. Write Perl scripts to perform simple manipulations of the file system, such as creating backup directories or changing the suffixes of certain files in a directory



Learning Objectives

  1. Describe common uses for Python scripts
  2. Write Python scripts to perform general purpose programming
  3. Write simple graphical interfaces with Python/Jython
  4. Write simple Python scripts for processing XML files


  1. The database portion of the syllabus is taken verbatim from: Computer Science Curriculum 2008: An Interim Revision of CS 2001 published jointly by the ACM and IEEE Computer Society.