Computer Science 136 |
Syllabus
Instructor: | Jim Teresco, TCL 304, 597-4251 |
Electronic mail: | domain: cs.williams.edu, username: terescoj |
Class Web: | http://www.cs.williams.edu/~terescoj/cs136_f05/ |
Class Hour: | Monday-Wednesday-Friday 9:00-9:50, Bronfman 104 |
Lab Meetings: | Wednesday 1-4, TCL 217a |
Office Hours: | Monday 2:30-4, Friday 1-2, and by appointment |
Teaching Assistants: | Heather Casteel, Edmund Rucci, Benjamin Wood |
TA Hours: | Wednesday 7-9, Thursday 7-9, Sunday 7-11, in TCL 217a |
Disclaimer
Everything on this syllabus is subject to change. Changes will be announced in class and updated in the online version of the syllabus.
Course Objectives
This course couples work on program design, analysis, and verification with an introduction to the study of data structures. Data structures capture common ways to store and manipulate data, and they are important in the construction of sophisticated computer programs.
Students will be expected to write Java programs, ranging from very short programs to more elaborate systems. Since one of the goals of this course is to teach you how to write large, reliable programs composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are easy to read, debug, verify, analyze, and modify.
Prerequisites
Texts
The required text for the course is Java Structures: Data Structures in Java for the Principled Programmer. Until this semester, we have been using the second edition (McGraw-Hill, 2003), but this semester you will be issued a preprint version (the sqrt(7) edition) this book as a course packet. You may also find it useful to purchase a Java reference. Core Java 2: Volume I - Fundamentals (Sun Microsystems Press, 2004) by Horstmann and Cornell is a good one. Be sure that any Java reference you choose is written for the Java 2 Platform Standard Edition 5.0. The 7th edition of Core Java 2: Volume I - Fundamentals is the appropriate version.
Lectures
Students are expected to attend class and participate in discussions. Come to class prepared. Assigned readings are listed on the lecture and reading schedule. Lectures will assume you are familiar with the material in the readings.
Labs
Labs are held on Wednesday afternoons in TCL 217a. Attendance is required. Typically, lab assignments will be handed out in class on the Monday before a lab meeting, you will work on the them during the scheduled lab time on Wednesday and on your own, and you will turn them in on the following Monday. This schedule may be adjusted to accomodate unusually large or small lab programs, holidays, mountain day, or exams. You may develop your programs anywhere (in the lab, your own computers, etc.) but grading will be done using the Computer Science Macintosh Lab systems unless otherwise specified. It is your responsibility to ensure that your program works on the grading platform. You will have 24-hour access to the lab with your Williams ID.
Lab assignments will have a written and/or a programming component. The number of points available will vary with the complexity of the assignment. Most if not all lab programming assignments will be designated as "laboratory programs." See the honor code guidelines at the end of this document for details. Programs will be graded on design, documentation, style, correctness, and efficiency. Answers to questions included in lab assignments are expected to be well-written.
Unless otherwise specified, lab assignments may be turned in with a penalty computed as 1.08h%, where h is the number of hours late. Extensions will only be granted in serious situations and must be arranged through the Dean's office. You can find a Java application that prints out a table of the late penalties here. Work turned in after solutions have been made available cannot receive credit.
All assignments and projects are to be submitted electronically unless otherwise specified. Please submit writtren work in portable formats (plain text where appropriate, PDF or postscript when needed, never something like Word documents). If in doubt about a file format, please check with me first. Keep a copy of all submissions for yourself.
Exams
Two exams will be held during our lab meetings (tentatively scheduled for October 19 and November 16). The final exam will be scheduled by the registrar. Details about the exams will be made available later in the semester.
Grading
Grades for individual assignments and exams are not scaled. Any scaling deemed appropriate will take place at the end of the semester by adjusting the above thresholds. The following thresholds may be adjusted downward (thereby raising grades) but will never be adjusted upward.
Breakdown: | Scale: | ||||||
Homeworks/Labs | 45% | A+ >= 99% | A >= 93% | A- >= 90% | |||
Exam 1 | 15% | B+ >= 87% | B >= 83% | B- >= 80% | |||
Exam 2 | 15% | C+ >= 77% | C >= 73% | C- >= 70% | |||
Final Exam | 25% | D+ >= 68% | D >= 65% | ||||
E < 65% | |||||||
The Honor Code as it applies to non-programming assignments is outlined in the Student Handbook.
For programming assignments in Computer Science courses, the honor code is interpreted in very specific ways. When a program is assigned, your instructor will identify it as a "practice," "test," "laboratory," or "team" program. The Honor Code applies differently to each with respect to collaboration or assistance from anyone other than the TAs or instructors:
Practice Programs. These are provided to help you gain an understanding of a topic, and are not graded. Guideline: Help on these programs is unrestricted.
Test Programs. Any assignment designated as a test program is to be treated exactly as a take-home, open-book test. You are allowed to read your textbook, class notes, and any other source approved by your instructor. You may not consult anyone other than your instructor. The instructor encourages the asking of questions, but reserves the right not to answer, just as you would expect during an exam. Guideline: Any work that is not your own is considered a violation of the honor code.
Laboratory Programs. Laboratory programs are expected to be the work of the individual student, designed and coded by him or her alone. Help locating errors is allowed, but a student may only receive help in correcting errors of syntax; help in correcting errors of logic is strictly forbidden. Guideline: Assistance from anyone other than the TAs or instructors in the design or coding of program logic will be considered a violation of the honor code.
Team Programs. Team programs are laboratory or test programs to be worked on in teams of two or more students. You are allowed to discuss team programs with your partners, but work with others is otherwise restricted by the appropriate rules above. Guideline: Any work that is not the work of your team is considered a violation of the honor code.
If you do not understand how the honor code applies to a particular assignment, consult your instructor.
Students should be aware of the Computer Ethics outlined in the Student Handbook. Violations (including uninvited access to private information and malicious tampering or theft of computer equipment or software) are subject to disciplinary action.
Guideline: To protect your work dispose of printouts and diskettes carefully, and avoid leaving your programs on hard disks in labs and other public storage areas.
The Department of Computer Science takes the Honor Code seriously. Violations are easy to identify and will be dealt with promptly.