CAS CS 112 B1 - Fall 2011 - Introduction to Computer Science II

Syllabus

Course Description

Official Description: Covers advanced programming techniques and data structures. Topics include recursion, algorithm analysis, linked lists, stacks, queues, trees, graphs, tables, searching, and sorting.

Elaboration: The main emphasis of the class will be the study of a number of important data structures, such as stacks, queues, linked lists, hash tables, trees and graphs; algorithmic techniques, such as recursion; and program analysis. A certain level of comfort with Java programming will be assumed, and the course will focus more on language-invariant concepts than on the details of Java, which you will be expected to either have learned or be able to pick up from reference sources (however, you are not on your own: we are always here to answer questions, of course). The rationale for this is simple: programming languages change frequently, while concepts such as recursion remain. My parents (who studied CS in the 1970s) by now have used over a dozen languages each--that's a new language every three years. Since you go to college only once, the best two things you can learn are the language-invariant concepts and the skill of picking up the language du jour.

Prerequisites

The class assumes working knowledge of CS 111, and a reasonable level of comfort with Java. If you have not taken CS 111 or have not programmed in Java, you will have some catching up to do early in the course; talk to us as soon as possible.

Staff

Instructor: Professor Leo Reyzin, reyzin@cs.bu.edu, (617-35)3-3283, MCS (111 Cummington St) 135B. Office hours Mon 10:30-12:30, Tue 3:00-4:00.

Teaching Fellow (TF): Ian Denhardt, isd@cs.bu.edu Office hours: Mondays 4:30-5:30, Thursdays 2-4 in the undergraduate lab.

We encourage you to come to our office hours. If you need to talk to us but can't make the office hours, please send one of us email. There will also be TFs on duty and Java tutors in the lab, with schedule to be announced.

Text

Algorithms, by by Robert Segewick and Kevin Wayne. And, of course, on-line resources, such as the Java API.

Meetings and Other Communication

Lectures are Tuesdays and Thursdays 12:30-2 in CAS (725 Commonwealth Ave) B36. Lecture attendance is required. You are responsible for all material covered in lecture. Some lecture material may not appear in the text.

You should have also selected a lab when you registered (if not, add it to your schedule!); make sure you have an "B" lab, not a "A" lab. Labs, which meet on Fridays 10-11 or 11-12 in EMA (730 Commonwealth Ave) 304 are headed by the TF, are a required part of the course. You will get the most out of lab if you come having read the homework assignment.

The class has a home page: http://www.cs.bu.edu/~reyzin/teaching/f11cs112b/. On occasion, we will send out email to the class list cascs112b1-l@bu.edu. "I didn't get your email" won't ordinarily be an acceptable excuse. We will also be using Piazza for course discussions and homework questions; you will get more info as soon as it is set up.

Assignments and Tests

There will be about 7 homeworks (usually biweekly, but sometimes weekly) (50%), a midterm (20%, end of October/early November) and a final (30%, Wed 12/21. 9-11am). I reserve the right to deviate from this formula in unusual cases.

Late Homeworks Policy and Dropped Homework Grade

By now you have probably learned that programming always takes more time than you plan for. You have to manage your own time well. We will make sure that the material you need to solve a homework assignment appears in lecture or lab well ahead of the due date. Please budget time for unexpected minor emergencies, such as computer crashes, colds, and noisy roommates. Late homework will not be accepted.

We understand, however, that sometimes circumstances are beyond your control. For just such an occaion, we will drop the lowest homework grade provided we see than you actually made an effort on that homework. In other words, a 0 will not be dropped. Do not use the dropped grade option without a good reason--if you use it up early and then get a cold later in the semester, it's too late. Exceptions to this policy will be granted only in serious circumstances (such as hospital stays or family emergencies) that I hope none of you will have.

Collaboration Policy

Collaboration policy for this class is as follows. The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam score will reflect it.

Violations of Collaboration Policy

Violations of collaboration policy fall into two categories: ones that are acknowledged at the time they occur (for example, in clearly marked comments in your code) and ones that are unacknowledged. Acknowledged violations (e.g., using someone else's code for a method you didn't know how to write yourself, and stating clearly in your code that this is not your own work) will result in an appropriate reduction in the grade, but will not be considered cheating.

Unacknowledged violations of the collaboration policy--for example, not stating the names of your collaborators, or any other attempt to represent the work of another as your own--will result in an automatic failing grade and will be reported to the Academic Conduct Committee (ACC). The ACC often suspends or expels students deemed guilty of plagiarism or other forms of cheating. I have served on the ACC and have seen it happen. I will assume that you understand the CAS Academic Conduct Code (read it if you haven't).

If you are uncertain as to whether a particular kind of interaction with someone else constitutes illegal collaboration or academic dishonesty, please ask me before taking any action that might violate the rules; if you can't reach me in time, then at the very least include a clear explanation of what happened in your homework write-up to avoid being treated as a cheater. Citing your sources is usually the easiest way out of trouble.

Important Dates

Last day to drop without a W grade: Tuesday, October 11, 2011.
Last day to drop with a W grade: Friday, November 11, 2011.
Final Exam: Wednesday, December 21, 2011, 9-11 am