BC CS102 Computer Science II Spring
2008

Professor
David Martin
dmartin@cs.bc.edu
Phone: 552.2757
Office: Fulton 424C
Hours: Tu/Th 2-3pm
Teaching Assistant
Alec Rose
rosead@bc.edu
Office: Fulton 160
Hours: Tue 7-9:30pm, Wed 5-9pm
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 415, M/W/F 12:00-12:50.

Facilities

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

Grading

Projects (50%) - Four projects broken into weekly programming assignments.
Problem Sets (25%) - Conceptual/mathematical aspects of the material.
Exams (25%) - One in-class midterm exam (10%) and a final exam (15%).

Academic Integrity

Boston College values the academic integrity of its students and faculty. It is your responsibility to familiarize yourself with the university’s policy on academic integrity. If you have any questions, always consult your professor.

Violations of academic integrity will be reported to your class dean and judged by the academic integrity committee in your school. If you are found responsible for violating the policy, penalties may include a failing grade as well as possible probation, suspension, or expulsion, depending on the seriousness and circumstances of the violation.

Collaboration Policy

All homework should be done in accordance with the university's policy on academic integrity. Within this context, there is no limit to how much you may speak with each other or help each other so long as any work that you hand in is your own work.

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. I require a doctor's note with contact information for illness, and a phone call from a parent or guardian for a family emergency.

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 language reference is strongly recommended:
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 is an excellent book on good Java practice:
Effective Java Programming Language Guide.
Joshua Bloch.
Addison Wesley, 2001.
ISBN 0-201-31005-8.

Buy it from: Amazon