BC CS102 Computer Science II Spring
2007

Professor
David Martin
dmartin@cs.bc.edu
Phone: 552.2757
Office: Fulton 424C
Hours: T/Th 3-4
Teaching Assistant
Alec Rose
rosead@bc.edu
Office: Fulton 160
Hours: W 3-5, F 3-6
Tech. Support
Phil Temples
support@cs.bc.edu
Phone: 552.0153
Office: Fulton 255
Admin. Support
Jane Costello
costeljl@bc.edu
Phone: 552.3975
Office: Fulton 460

Overview

This class is fundamentally about the way in which complex problems can be solved in computer science by breaking them down into an assembly of simpler patterns of data organization and computation. Over time, we have learned that a standard set of data structures can be used in combinations and arrangements (algorithms) to solve a wide variety of useful problems.

We will cover the fundamental data structures (arrays, linked lists, binary trees, heaps, and hash tables), more advanced data structures (multiway trees, balanced trees, sets, graphs), fundamental searching and sorting algorithms, general principles of algorithm design (recursion, divide-and-conquer, encapsulation, randomization, dynamic programming), and basic algorithm analysis (asymptotic analysis, recurrences). These fundamental concepts will be studied in the context of applications such as symbolic computation, data compression, searching, image processing, physical simulation, and game playing.

All programming will be done in Java using the Eclipse development environment.

Prerequisites

CS101 Computer Science I, or permission of instructor.

Lecture

Lectures are in Fulton 453, T/Th 1:30-2:45.

Facilities

You may use the CS Lab in Fulton 460. The CS Lab Wiki has much information on the lab, including account information.

Grading

Programming (50%) - Weekly programming assignments.
Homework (25%) - Conceptual/mathematical aspects of the material.
Exams (25%) - One in-class midterm exam (10%) and a final exam (15%).

Collaboration Policy

All homework should be done in accordance with the University's policy on academic integrity. This does not mean, however, that you should work alone. There is no limit to how much you may speak with each other or help each other. In fact, I strongly encourage you to use any resource at your disposal to learn as much as possible. What is important is that any work that you hand in be your own.

Program Grading

Programming assignments will receive two grades. The first grade, out of 10 points, is for functionality (correctness and efficiency); the second grade, out of 3 points, is for programming style (code organization and legibility).

Note that if your program does not compile (i.e. contains syntax errors), then it will receive a zero for functionality.

Late Policy

Late homework and programming assignments will not be accepted, and will receive an automatic zero. The reason for this is that I will often discuss the homework in lecture immediately, so it would be unfair to accept late assignments.

Extension Policy

Only extraordinary circumstances merit an exension on homework assignments or programming assignments. I require a doctor's note with contact information for illness, and a phone call from a parent or guardian for a family emergency.

Program Submission

Zip up your project directory, and submit it via WebCT. Also hand in a printout of your code in class; if there is no class on the day following the due date, then put your code printout in the TA's mailbox in Fulton 460.

Homework Submission

Homework is to be submitted at the start of class on the day it is due. You may also leave your homework in my mailbox in Fulton 460 before the start of class. If I do not receive your homework by the start of class, then it will be considered late.

Books

The required textbook for this class is:
Algorithms in Java, Third Edition, Parts 1-4.
Robert Sedgewick.
Addison Wesley, 2003.
ISBN 0-201-36120-5.

Buy it from: BC Bookstore or Amazon

The following Java reference book is strongly recommended, and will be useful if you continue to use Java after this class:
The Java Programming Language, Fourth Edition.
Ken Arnold, James Gosling, David Holmes.
Addison Wesley, 2006.
ISBN 0-321-34980-6.

Buy it from: BC Bookstore or Amazon

The following book is strongly recommended if you aspire to be an expert Java programmer:
Effective Java Programming Language Guide.
Joshua Bloch.
Addison Wesley, 2001.
ISBN 0-201-31005-8.

Buy it from: Amazon