Course Outline
Course Description
This course gives an introduction to relational database systems, logical database design, E-R models, formal
relational query languages, SQL, functional dependencies, normalization, other commercial languages, and data warehouses.
Basic Information
Lectures
M W F 12:00-14:20, in Dempster (DMP) 110
Tutorials
Tutorial meets twice a week on Wednesdays and Fridays. There are four different tutorial
sections:
- T1A: 16-17: in X350
- T1B: 15-16: in X350
- T1C: 10-11: in 008
- T1D: 11-12: in 008
Due to spacing issues please attend your own tutorial slot.
Textbooks/Clickers
Required textbook
Ramakrishnan and Gehrke. Database Management Systems, 3rd
Edition, McGraw-Hill, 2003. The 2nd edition is also fine. A copy of the textbook is on reserve for
short-term (2 hour loan) at the Library Reserve Room in the Irving
Barber building and the ICICS/CS
Reading Room.
Required Clicker
iClicker or i-clicker + response device (Available at the UBC Bookstore)
Additional Reference Material (optional)
If you want additional reference material,
any book on relational database
systems that has been published in the past few years should be fine.
Prerequisites
Either (a) CPSC 221 or (b) all of CPSC 260, EECE 320 and one of CPSC 210, CPSC 211, EECE 309.
Evaluation
Your performance in the class will be based
on a number of activities. Final grades
will be calculated as follows:
- 1% bonus for active participation and answering questions in Piazza
To pass the course, you must obtain a 50%
overall mark, and pass the final exam. I
reserve the right to change this scheme at any time, though I do not
anticipate doing so.
Clickers
Clicker marks will be based on both participation and correctly answering questions. To receive full credit, you must participate in and correctly answer to at least 90% of the exercises over the term. Note that the goal of this policy is to cover cases where you are absent or forget your clicker, so there are no "excused absences" from the clicker questions. However, if you will be absent for long periods of
time, please come and talk to me.
Tutorials
Tutorials are the fun part of the course. In most sessions you will work in groups and apply the concepts
you'll learn in the lectures to solve real-world problems. At the beginning of each session the TA will
explain the problem and the tasks each group has to complete. At the end of the session some group(s)
will present their solutions and discuss them with the rest of the groups.
Tutorial marks will be based on active participation (a grade of 0, 1, or 2).
PeerWise
We'll be using PeerWise this semester. You will be generating your own multiple-choice questions and sharing them with one another. Our aim is to empower you to think about ways of evaluating understanding of a learning goal while having the opportunity to gauge your own understanding of it in the process. Use of PeerWise enables you to get immediate feedback on your work and allows you to compare yourself to your peers. In addition, by using crowdsourcing, we can create a pool of high-quality multiple-choice questions that can be used in the future offerings of the course. For more information on PeerWise please see
here and for information on how you will be graded on PeerWise see
here.
- PeerWise calls
- Call 1: Starts Saturday, May 7 and ends Friday, May 20
- Call 2: Starts Saturday, May 21 and ends Friday, June 3
- Call 3: Starts Saturday, June 4 and ends Friday, June 17
Project
The required project will be completed in
groups of 4. For this project you decide the application domain based on data
that you have or find interesting. Building
a full database application from scratch allows you to control the process;
instead of having the pieces decided for you, you must make all of the
decisions by yourself. Part of this process is that you will see how design
decisions made at the beginning will affect your final project.
You will be graded based on the result of a
demo, a group report, a personal report, and meeting of intermediate deadlines.
You should expect most (though not all) of the programming to be required in
the project rather than in the homeworks. The project will either be conducted
using Java/JDBC, or using web design and PHP.
More info can be found on the project page.
Examinations
There will be two midterms and a final
examination. Each exam will be closed book.
- Midterms will be held during class time. If you are unable to write a midterm (e.g., due to
illness), you should obtain suitable documentation (e.g., doctor's note) and inform the instructor ASAP - not after you've written the exam or gotten your mark back.
- Midterm 1
- date: Wednesday, May 25
- time: 12:00 - 14:20
- location: BUCH A101
- Midterm 2
- date: Wednesday, June 8
- time: 12:00 - 14:20
- location: BUCH A101
- Final will be scheduled by UBC. If you are sick for the final exam, you
must present a doctor's note to the Science Faculty office. You will write a different exam, at a future
date determined by the Registrar's office.
Piazza
Please limit emails to the instructor and the TAs to items of a personal or confidential nature (e.g., illness). Problems with the CPSC 304 course contents (e.g., lecture, textbook, assignments) can be posted on
Piazza,
but please check to make sure that your question hasn't already been asked or answered. Piazza will be monitored by course staff, but we cannot guarantee to answer each one. Students are encouraged to answer questions, which will allow you to get better at articulating your opinions, providing support for your views, developing arguments, and listening and relating to the views of others.
Selected individuals that actively respond to postings on Piazza, may recieve a bonus mark of up to 1%.
Illness and late policy
Please do not come to class while very sick --- it's not good for you,
it's not good for the rest of us.
Do contact the instructor by e-mail
immediately when you know you will miss a graded assessment (e.g.,
exam/project).
No late projects will
be accepted without a valid reason, such as illness. If you think you
have a valid reason, please contact the instructor directly.
Because you can earn 100% even if you miss some, we typically do not
accept excuses for missed clicker exercises. (That
said, if you have concerns, please talk to us!)
Collaboration/Cheating Policy
We believe that you will
learn at least as much from each other as you will learn from the teaching
staff. Therefore, we want to encourage collaboration without compromising a
fair grading scheme (as described in the department's
policy
on collaboration).
In most instances, you can collaborate as much as you want with whomever you want subject to three
restrictions:
- You must
acknowledge everyone with whom you collaborated on your submission.
- You may
not take a record of any sort away from the collaboration. (So, erase all
whiteboards, delete all e-mail, recycle all paper, etc.)
- You must
spend at least an hour after the collaboration and before working on your
own submission doing mindless activities. In other words, do something so
distracting and inane that you must have learned anything you can
reconstruct afterward.
The exceptions to this rule are:
- On the
project you may collaborate with your group.
However, you will be asked to define how
the collaboration worked. Note that collaboration with people outside your
team still falls under the collaboration rules given above.
- Collaboration
with the instructor and TAs (including discussion board posts) is excluded
from the collaboration rules.
- You may not
collaborate at all on the midterm exams, the final exam, or any work that
we explicitly state must be done individually.
- You may
be unable to destroy some records you create during collaborations (e.g.,
posts to the Piazza discusssion board). In such
cases, you should try to follow the spirit of the rule: exercise caution in the information you share (e.g., don't
provide answers to problems but rather discuss similar problems
or describe concepts).
Finally, use common sense. For example,
carefully memorizing someone else's SQL query and then regurgitating it an hour
later is still plagiarism and cheating.
Oracle/MYSQL
We will use Oracle as our database
Management System (DBMS). It is hosted
by the Computer Science department. The
command line interface to Oracle is called SQL*Plus. For programming assignments, most people will
probably use Java/JDBC or PHP to interface with the DBMS. You may also use MYSQL as your DBMS in your project. Make sure everyone in your group is ok with this choice, as we're not going to have a tutorial session on MYSQL.
Problems?
Problems with Connect itself should be directed to help@itservices.ubc.ca. Problems with undergrad
accounts and servers should be directed to help@ugrad.cs.ubc.ca.
Use hardware@ugrad.cs.ubc.ca to report hardware problems.
Acknowledgements
Slides and other course materials are based
on previous materials from others, especially the authors of the book (Raghu Ramakrishnan and Johannes Gehrke), Rachel Pottinger, Phil Bernstein, Alon Halevy, Ed Knorr, Laks Lakshmanan, Raymond Ng, George Tsiknis,
and Steve Wolfman. Thanks, folks.