ICS 184 / EECS 116 Summer 2006
Lab Manual


The assignments


Introduction

This quarter, you'll work on six assignments. As a group, they will involve a combination of database definition and manipulation in the variant of SQL supported by an open-source database management system called MySQL, along with written answers and analysis about broader concepts and the underlying theory. It is not necessarily the case that the assignments will increase in size or difficulty throughout the quarter; they will be centered around topics that are covered in lecture, which vary in difficulty — and, I should note, different people will find different aspects of this course to be more difficult than others.


Evaluation of your work

Each of your assignments will be graded using a 100-point scale, with some of the assignments broken into parts with possibly unequal weights.

This course moves forward at a rapid pace, as there is an assignment due about once every ten days. Therefore, late submissions of assignments will not be accepted. Bear in mind that you will receive partial credit for an assignment which is partially completed, so I encourage you to submit what you have when the assignment is due.


A word of caution about SQL

SQL is the most commonly used database definition and manipulation language in the world. Like many programming languages, a series of standards has been developed over the years, each comprising an agreement among the community of SQL users about the syntax and semantics of the language. The latest of these standards is known as SQL:2003. The intent of such standards is to make it possible to move from one language implementation to another, with little or no difference in the behavior of programs; following the standard is a good way, as a programmer, to keep programs reasonably portable between implementations. (Often, though, this isn't enough.)

Most implementations of standardized programming languages (e.g., C++, Java, Scheme) embody the language as specified in its standard — or, at least, a substantial subset of the language, with little deviation from the standard other than a few missing features. (There is only one compiler, for example, that implements the complete C++ standard, though most come very close.) If you write a syntactically and semantically correct program in such a language, then run it through a compiler for that language, you can have a reasonable expectation that the program will compile and run successfully.

Though SQL is standardized, the reality is that no DBMS implements the complete SQL standard, and each introduces its own extensions and quirks. Many are missing a substantial portion of the functionality required by the standard. For this reason, it will be important when working on these assignments to ensure that you're writing SQL statements that are compatible with the DBMS, MySQL 5.0, that we'll be using in this course. If you have prior experience with a different database system, you may find that MySQL supports a different subset of SQL than you're accustomed to, and that it uses slightly different syntax than you've learned in some cases; we will also cover some SQL features in lecture — and you'll read about some in your textbook — that are not supported by MySQL, though I will try to make these distinctions clear along the way.

Be aware that the MySQL 5.0 Reference Manual is the final arbiter of what is considered to be legal SQL, for the purposes of our assignments. There will be no exceptions to this policy.


Submitting your assignments

Unless stated otherwise in an assignment write-up, we will only be accepting electronic submissions of your assignments. Follow this link for a detailed description of how to submit your assignments to Checkmate, our Web-based electronic submission tool. Understand that, unless otherwise stated, we will only accept assignments submitted using the procedure described there; we do not accept printed copies of your assignments, nor do we accept them via email under any circumstances.


How do I use the course newsgroup?

I've written a brief document that explains how to read the course newsgroup.


Academic honesty

As students in this offering of ICS 184 or EECS 116, you are expected to know and follow the academic honesty policies of both the School of ICS and the University as a whole. Please take a few minutes to read the policies, which can be found at this link.

All of your lab work is expected to be completed solely by you. Group work and/or sharing of code between students is not permitted. Note that "high-level discussion of course material for better understanding" is permitted and encouraged, but when it comes time to sit down and write code, that is expected to be done by you and you alone. All submissions are compared to one another using an automated plagiarism detection system. This system is extraordinarily good at finding similarities between submissions, even when there are superficial differences. (Note that we also compare your submissions to those submitted during previous quarters whenever one of these assignments was given during a previous quarter, so it is an exceedingly bad idea to turn in, or even refer to, code written by a friend of yours who took the course already.)

Since all of your work is expected to be completed solely by you, you will be held responsible even if you plagiarize only a small portion of someone else's assignment.

Academic dishonesty is a two-way street. Providing your code to other students for them to turn in as their own is not permitted anymore than turning in someone else's code. Resist the temptation to give code to your friends "for reference." Based on my experience, I can say that your "friends" may very well betray you and turn it in, anyway.

Violators of academic honesty policies are subject to the penalties described in the School of ICS policy. They are also subject to an immediate course grade of F, without the possibility of dropping the course to avoid the grade. Also, be aware that a single documented case of academic dishonesty may preclude you from switching into a computing major, registering for a computing minor, joining the ICS Honors Program, and graduating with honors.