General Information
Instructor
Professor: Brad Vander Zanden
- Office: Claxton 354
- Office Hours: T 3:30-5:00pm, W 3-4pm
- Email: b v z @eecs.utk.edu
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 www.w3schools.com
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:
Language | Reference |
Perl |
- Beginning Perl
by Simon Cozens. Free online reference.
- Perl in 24 Hours. Clinton Pierce.
Sams Publishing.
- Learning Perl. Randal Schwartz, Tom Phoenix, and Brian D Foy.
O'Reilly.
|
Python | - Learning Python, by Mark Lutz and David Ascher.
O'Reilly.
- Programming in Python 3 (2nd Ed or higher recommended). Mark
Summerfield. Qtrac Ltd.
- 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.
- Dive Into Python 3. Mark
Pilgrim. 2011. Free online reference.
|
XML | Sams 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
- 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.
- 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.
Grading
For Undergraduates
For Graduate Students (CS565)
- Homework Assignments: 30%
- Project 20%
- Midterm (Oct 20): 25%
- Final: 25%
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+.
Syllabus
Topics:
- Data modeling
- Conceptual models (such as entity-relationship or UML)
- Object-oriented model
- Relational data model
Learning Objectives
- 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.
- Describe the modeling concepts and notation of the entity-relationship model and UML, including their use in
data modeling.
- Define the fundamental terminology used in the relational data model .
- Describe the basic principles of the relational data model.
- Illustrate the modeling concepts and notation of the relational data model.
Topics:
- The massive impact of indexes on query performance
- The basic structure of an index
- Keeping a buffer of data in memory
- Creating indexes with SQL
Learning Objectives
- Generate an index file for a collection of resources
- Explain the role of an inverted index in locating a document in a collection
- Explain how stemming and stop words affect indexing
- Identify appropriate indices for given relational schema and query sets
- Estimate time to retrieve information, when indices are used compared to when they are not used
Topics
- Mapping conceptual schema to a relational schema
- Entity and referential integrity
- Relational algebra
Learning Objectives
- Prepare a relational schema from a conceptual model developed using the entity- relationship model
- Explain and demonstrate the concepts of entity integrity constraint and referential integrity constraint (including
definition of the concept of a foreign key).
- 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).
- Demonstrate queries in the relational algebra.
Topics:
- Database design
- Functional dependency
- Decomposition of a schema; lossless-join and dependency-preservation properties of a decomposition
- Candidate keys, superkeys, and closure of a set of attributes
- Normal forms (1NF, 2NF, 3NF, BCNF)
Learning Objectives
- Determine the functional dependency between two or more attributes that are a subset of a relation.
- Connect constraints expressed as primary key and foreign key, with functional dependencies
- Compute the closure of a set of attributes under given functional dependencies
- Determine whether or not a set of attributes form a superkey and/or candidate key for a relation with given
functional dependencies
- Evaluate a proposed decomposition, to say whether or not it has lossless-join and dependency-preservation
- Describe what is meant by 1NF, 2NF, 3NF, and BCNF.
- Identify whether a relation is in 1NF, 2NF, 3NF, or BCNF.
- Normalize a 1NF relation into a set of 3NF (or BCNF) relations and denormalize a relational schema.
- Explain the impact of normalization on the efficiency of database operations, especially query optimization.
Topics
- Perl uses and limitations
- Variables, types, and control structures
- File I/O
- System commands
- Regular expressions
Learning Objectives
- Describe common uses for Perl scripts
- Write Perl scripts that use regular expressions
to extract information from a file and generate reports
- Write Perl scripts that use regular expressions to
type check information from html forms
- 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
Topics
- Python uses and limitations
- Variables, types, and control structures
- File I/O
- Object-oriented features
- Regular expressions
- Jython
- Interaction with graphical user interfaces
- Interaction with XML
Learning Objectives
- Describe common uses for Python scripts
- Write Python scripts to perform general purpose programming
- Write simple graphical interfaces with Python/Jython
- Write simple Python scripts for processing XML files
Footnotes
- 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.