Syllabus.

Teaching staff.

Instructors:
Dan S. Wallach, Associate Professor of Computer Science.
Graduate teaching assistants:
Michael Dietz, Shashi Shekhar, Yuliy Pisetsky, Caleb Spare
Undergraduate labbies:
Nick Bridle, Rick Manning
Office hours:
Any of the teaching staff will be happy to meet you by appointment; the instructors and TA have offices in Duncan Hall which make this particularly convenient.
Help NOW:
For some quick help, stop by the course's IRC server. The staff are likely to be trolling, especially during the IRC office hours (to be determined).

Textbooks.

[Book cover] Introduction to Algorithms (Second Edition) [Required Text]
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
MIT Press
Hardcover - 1180 pages (2001)
Note: the third edition is now out. For our purposes, it covers the same material and you can use either book. The third edition only adds new material with respect to one lecture in comp314.

[Book cover] The Pragmatic Programmer [Required Text]
Andrew Hunt and David Thomas
Adison-Wesley
Softcover - 321 pages (2000)

If you have trouble getting CLRS locally, you can always try buying it at Amazon.com, Bookpool, or any other reseller you might like. Similarly, H&T is widely available.

Grading breakdown.

Homeworks.

Homeworks are (typically short) programming assignments for you to complete, individually, over the course of a week. You should consult your peers only for assistance on general concepts or mechanical issues (getting Eclipse to work, getting JUnit to run, using Subversion). At no point should you be looking at another student's code; see Honor Code below.

Projects.

Projects (list) are large programming enterprises that span three weeks:

Project grading rubric:

Projects are worth 25 points. Each point comes out to 1% of your final grade, as well, so each project is essentially a quarter of your comp314 grade. The points break down as follows:

README and code packaging:

Your code submissions (that is, both beta and final) should be organized in such a manner that they can be executed from a commandline using the commands javac and java. Another acceptable alternative is to package your project using ant. Although we encourage the use of Eclipse for development, you should NOT assume that your graders will use Eclipse. In any case, you should document how to compile, test, and run your code in your README file. See this guide for some useful tips on how to package your code in an acceptable form and for more detail on the README.

Flakes.

Because grades in comp314 are so strongly tied to your class projects, and because class projects are done in groups (pairs), your grade necessarily becomes entangled with your partner’s. In order to address problems we have had in the past, comp314 has a hard and fast rule:

You flake, you fail.

If your partner is counting on you and you disappear, it hurts your partner. As much as possible, we wish to prevent this. By “flaking,” we mean being unresponsive (over a period of days, or hours at a crucial time) to e-mail and other attempts to contact you. You are expected to pull your own weight in this class.

If you flake, we will reassign your partner and you receive an instant ‘F’ as your grade for the project. Your professionalism grade is forfeit as well.

Alternatively, if we determine (based on complaints, inspection of code, etc.) that one partner exerted a disproportionate share of the effort, we may arrange a non-equal distribution of the project points, at our own discretion.

Students should not assume that we will invoke any of these rules. However, we do encourage students experiencing problematic partners to contact us early so we can politely remind everyone of their responsibilities.

We also recognize that things happen in your life that are beyond your control and that require you to reprioritize your time. In these cases, you are responsible for contacting your partner(s) as well as the course staff as soon as possible to explain your predicament.

In the event you are considering dropping comp314, your timing matters. Programming projects last three weeks. The time to drop is between projects. By staying in the class, you are making a personal committent to your partner to complete a project after you have begun it. Dropping mid-project is extremely rude to your partner.

Lateness.

The late policy for homeworks and for project final milestones—as determined by the timestamps on your svn checkins—is as follows:

  1. −2% for each hour late, up to and including 3 hours.
  2. If more than 3 hours late, then −10% for each day late, up to 4 days.

Things you should be aware of if you turn your project’s final milestone in late:

Note that, as per the grading rubric above, missed project spec and beta deadlines result in a loss of one point, regardless of how late you are. (Don't abuse this! The later you turn in your milestones, the less time you have to get our feedback and finish the project.)

Honor code policy.

While you are encouraged to have discussions with your peers in this course, there are a number of situations in which we require you to keep quiet.

Homework:

Homeworks are designed to encourage (and assess) individual retention of course material, and are therefore to be completed on your own. While you can (and should!) discuss the lectures and topics of the class with one another, we draw a line at explicitly helping with the homework problems or code. If you get stuck on the homework, get in touch with the teaching staff; we’ll be glad to set you on the right path.

Projects:

What you should and shouldn’t share depends on the phase of the project.

Accommodations.

Any student with a documented disability seeking academic adjustments or accommodations is requested to speak with me during the first two weeks of class. All such discussions will remain as confidential as possible. Students with disabilities will need to also contact Disability Support Services in the Ley Student Center.