CS 231: Syllabus

Syllabus for Fall 2007

Topics and Reading Assignments


P. Drake, Data Structures and Algorithms in Java, Prentice Hall, 2006.

A. B. Shiflet and G. W. Shiflet, Introduction to Computational Science: Modeling and Simulation for the Sciences, Princeton University Press, 2006.


In-class Exams (2) 25%
Final Exam 20%
Class Participation 5%
Assignments 40%
Homeworks 10%

Assignments and homeworks will account for half of your grade, with exams and class participation accounting for the remainder. The grading policy on assignments is that the tasks specified explicitly in the lab description will constitute about 85% of the assignment. If you complete the specified parts of the assignment properly, and produce a high-quality writeup, it's worth up to a B+ grade. In addition, the lab description will include a variety of extensions to the assignment, or you can come up with your own. Completing one or more extensions, in addition to the specified parts of the assignment, will earn you some flavor of A.


Weekly homeworks will mostly be small programming assignments or problem sets, which are expected to take less than an hour to complete. Homeworks must be emailed to the professor as a single zip file by class time on the given due date. The homework deadline is a hard deadline, and you should complete them by yourself. You may discuss the homework ideas among yourselves, but your code and your answers should be your own.

Assignments will be longer term projects, and I suggest you work in pairs. For full credit, assignments need to be submitted prior to midnight on the due date. Assignments submitted late will be penalized 20% per day.

Collaboration on assignment concepts and ideas between groups is acceptable, but you need to understand everything you do, and your code should be your own group's code. If you use ideas from another group, be sure to indicate that within your code or writeup. Err on the side of caution. The worst thing that can happen is the professor noticing disturbing similarities in homeworks or assignments with no attribution of credit.


For the assignments, you will need to put together a short web page writeup. The writeup should describe the assignment, explain any required theory, and present the results. Your audience for the writeup is your fellow students who might be interested in what you're doing. To hand in your code, create a single zip file and email it to me along with the URL for the assignment.

Weekly Topics and Readings

  • Introduction, course concept, background
  • Review of classes, basic data structures
Drake, Chapters 1-3 (review)
  • Polymorphism, Inheritance
  • Vectors
  • Basic population dynamics
Drake, Chapter 4;
  • Stacks and Queues
  • Array-based implementations
  • Linked implementations
Drake, Chapter 5
  • Supermarket models and load balancing
  • Lists
  • Simple and doubly-linked lists
Drake, Chapter 6;
Mitzenmacher, 1998
  • Sorted linked lists
  • Analysis of Algorithms
  • Drake, Chapter 7
Drake, Chapter 7
  • Binary search
  • Sorting algorithms
Drake, Chapter8
  • Recursion
  • Binary trees
Drake, Chapters 9 and 10
  • Traversing trees
  • Adding and deleting nodes
Drake, Chapters 10-11
  • AVL trees
  • Red-black trees
Drake, Chapter 14
  • Graphs
  • Searching Graphs
  • Dijkstra's Algorithm
Chapter 15
  • String matching
  • Searching genetic strings
Drake, Chapter 13
  • Unix
  • The terminal is your friend
  • Programs in context
  • Intellectual Property
  • Copyright, Trademark, Trade Secret, Patents