|
CS102 Computer Science II
|
Spring
2007
|
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:
The following Java reference book is strongly recommended, and will be
useful if you continue to use Java after this class:
The following book is strongly recommended if you aspire to be an
expert Java programmer:
|