Quick Reference
Course Meets:   Section 3: T Th 9:30-10:45 - ISAT 243
                 (alternate location ISAT/CS 143 for lab work)
Course Schedule:   Course Schedule
Instructor Information

Nancy Harris
  Office: ISAT/CS Room 217
  Phone: 568-8771 (8-8771)
     E-mail: harrisnl with usual jmu extension
 

Gmail: csharrisnl Skype: csharrisnl

  Office hours See Schedule
  Instructor Policies

Description:

How would you like to see how applications like e-campus and Canvas interact with you and the underlying database? How would you like to make an application that will be deployed on the web and used by hundreds of people? How would you like to design your own database applications to keep track of anything from inventories and collections to the latest sports stats? This course delves into the world of database design and application of that design to real world problems. While exploring the theoretical underpinnings of current database management software, we will also explore the practical aspects of designing, deploying, and maintaining database systems and see examples of databases used in many different kinds of applications.

In this course, students study database design and management with emphasis placed on data definition languages, data manipulation languages, query languages and on common sense design of databases which support applications. You will gain practice in using SQL with host languages such as PHP or Java. Outside of the scope of this course are XML and managing a database management system.

Prerequisite: CS 345 or CS 274, or ISAT 340. Please see the instructor if you do not meet these prerequisites.

Goals and Objectives

This course provides an introduction to the theory and practice of modern relational database systems. By the end of the course, you should be able to:

  • Summarize features of the relational model including structured data, relational operations, and integrity constraints.
  • Construct a conceptual model (ER diagram) and a physical model (relational design) from a general data description.
  • Illustrate anomalies and inconsistencies that can occur within a database design and how to correct them.
  • Write analytical queries in SQL (select, project, inner/outer join, grouping, aggregation, sorting, distinct, subqueries).
  • Design and implement a substantial three-tier application, both individually and with others.
  • Manage a successful semester-long team project (communication, source control, frequent code reviews).

This course reinforces (R) or emphasizes (E) the following departmental goals:

  • Communications: Students can express themselves clearly on technical matters orally and in writing. They can communicate effectively with individuals that do not have a technical background. (R)
  • Professional and Ethical Issues: Students can provide an overview of the professional and ethical challenges faced by individuals and organizations in the information age.(R)
  • Programming: Students can develop computer programs that solve specific problems using an object oriented programming language.(R)
  • Software Engineering: Students can explain the software development lifecycle, software project management, development tools and methods, software quality assurance and the challenges of producing quality software products.(R)
  • Database Systems: Students can explain the types of physical storage and access methods; create data models and data definitions; use query languages effectively; explain dependencies, decomposition and normalization; and design databases to recover from failures, maintain consistent data, and support concurrent access.(E)
  • Teamwork: Students can work effectively in a team to develop a software product.(R)

In addition, you will install and gain a working understanding of a commercial-grade database system and the means to create a functioning application.


Class Format:

We will meet in the classroom most days.  During those days we will have a combination of lecture for some material and group work for other material or a combination.  During a some class periods, we will meet in the lab for practical lab activities.  The group work will consist of POGIL or POGIL like activities.  http://www.pogil.org/ - for more information.

Homework will consist of reading from the text and doing written assignments or making use of the author's homework site.
See link for the schedule.  The schedule is subject to change and will be filled in more specifically as we work through the topics.

Communication:

We will use Canvas and the web as a means of communicating. Announcements for class will be made on the Canvas announcements page or the course schedule page if Canvas is unavailable. Any other announcement that you receive through other means (such as e-mail) is suspect unless confirmed by Canvas or the course web page. If I send an e-mail to the class as a whole, I will also put the text into a Canvas or web announcement.  If school is cancelled due to snow days, be sure to check the announcements for any due date changes or additional homework assignments. I generally do not use the Saturday make-up day instead opting for online assignments instead.

Also, use my office hours if you are having difficulty, or just need clarification on an assignment or with something that you are working on.  Office hours belong to the students and is a good way for us to communicate individually.


Textbook and Required Material

Required:
Jeffrey D. Ullman and Jennifer Widom, A First Course in Database Systems, Third Edition (ISBN 0-13-601917-X
OR
Hector Garcia-Molina, Jeffrey D. Ullman and Jennifer Widom, Database Systems The Complete Book, Second Edition (ISBN 0-13-606701-8) (This book incorporates the first book as the first 12 chapters).
  
For the required texts, the Complete Book includes the First Course Book as its first 12 chapters. While we may touch on topics in some of the latter chapters, the First Course Book will be fine for the class. You may also share a book with a colleague if you wish. Homework assigned from the book will be work that you can do cooperatively with others in the class.
 
Online Resources - Let me know of additional resources that you find helpful
php tutorial: http://php.net/manual/en/tutorial.php
mysql reference: http://dev.mysql.com/doc/refman/5.0/en/index.html
 
PostgreSQL reference: http://www.postgresql.org/docs/
 
html reference:http://www.w3schools.com/
 
Java Tutorials: http://docs.oracle.com/javase/tutorial/jdbc/basics/index.html

Grading

We are going to grade on a contract grading system.  For each category of work, you will choose what percentage of your grade will be based on that category.  See Assignments tab in Canvas for the contract form.  You must choose a percentage within the range (inclusive) and your percentages must total 100%. You will have one opportunity to change your contract the week just prior to spring break.

Exam 5 - 20%
Final Exam (Tuesday, May 6, 8am) 20 - 35%
Major group project 25%
Mini individual project 0 - 15%
Lab, homework, class participation 5 - 15%
Weekly quizzes 5 - 10%


The exams are pretty self explanatory. They will be cumulative, but focus on new material each time. Each will be taken during the class time or final exam time. Exams will be weighted to a 100 point scale.

The major group project will entail a full software development effort of a database application. You will work with a customer, writing appropriate documentation for the project including a database design, implement that design, design a user interface and implement that interface. The project will involve both individual and group contributions for the grade. A major presentation will be made during the last week of the class. A grading rubric will be provided for the overall project as well as for the individual deliverables for the project. See the Project module in Canvas for project particulars. NOTE: grading on the project will be an accumulated points basis, while grades for other multiple assignment categories are averaged.

The mini individual project will focus on designing a database, populating it with some sample data and provide a series of queries to work with that data. It will be assigned before spring break due about 2 weeks after spring break. A grading rubric will be provided for the mini-project.

The lab, homework, and class participation component of your grade will involve many different kinds of learning activities. These are designed not so much to evaluate your performance as they are to help you to understand the material better and to prepare for the more major assignments. You are welcome to use colleagues in the class, online resources, and other sources of help for working through labs and homework assignments. These will generally be graded on an "effort" system and we may employ the textbook author's homework submission system for some of the assignments. I anticipate dropping about 10% of the lowest grades.

Weekly quizzes will be posted to help guide you through the class readings and/or reinforce what we have learned in the prior week. Many students find our first exam difficult and my expectation is that the quizzes will help you by highlighting important concepts. These quizzes will be open book and open note and will allow you to take them at least twice to improve your performance. I anticipate dropping 3 quiz grades.


Class Policies and Student Success

See the link above for general instructor policies. Specific policies and items which will insure your success in this class are:

  • Come to class, come to class, come to class - Students who attend class regularly will keep up with the workload better, will gain insights from talking with classmates or the instructor, and will do better in this class as a result.  We use a lot of active learning in class so attendance is mandatory. While I will not take formal attendance, you will lose points if in-class work or homework is collected during a class period.
  • Workload -There will be ongoing assigments throughout the semester for the major project.  In addition, there will be reading and reading preparation before most classes.  Expect some kind of homework to prep for most classes.
  • Late assignments - All homework is due at the beginning of class on the day that they are due. No late assignments will be accepted for credit, although I will review late assignments at your request. For major and mini project assignments, late assignments will have a 10% per day penalty associated with each deliverable.
  • Exams - We have two midterms and a final exam. It is expected that all students will take the exams at the normally scheduled time. If an emergency occurs which requires you to be away, let me know as soon as you know about the situation. I may request documentation in order to allow you to take a make-up exam.
  • Honor Code - I report ALL incidents of academic dishonesty to the Honor Council. If the violation is severe, I will refer it to the Honor Council for formal resolution. Less severe violations may be handled informally. If you know of cheating in this class, it is your responsibility to let the instructor know as soon as possible. If you are involved in a situation where you are not sure if what you did was right or violates the Honor Code, please see me for clarification.  Examples of violations in this class would include (but not be limited to): sharing answers with another classmate on the exam; lifting work from the web for any portion of the project without citation; two teams collaborating on any of the project deliverables; and individuals collaborating on the mini project. Things that are okay to do in this class include: working with others on homework; collaborating with others in building ckass notes or wiki entries; working within your own team on anything related to the project; and using example code that you may find on w3schools.com or java.com with proper citation.
  • Extra Credit - I generally do not have extra credit opportunities.

Student Success - You will be successful in this class if you:

  • Attend class and each day and actively participate.
  • Engage with the material...don't passively listen in class and expect to do well on the application assignments.
  • Ask for help when you need it. Ask questions during lecture time.
  • Get started early on assignments.
  • Think about what you are doing...don't just do. In this course, the why is more important than the what.
  • Experiment with the database management systems that we will be using.

If you need additional resources to help you with your learning, let me know. Additional reference books may be placed in the library upon request and I have some database books that you may borrow for short periods if you need additional resources.


Updated 01/10/2014 - NLH