CS 231: Syllabus

Syllabus for Fall 2007

Topics and Reading Assignments

Textbooks

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.

Grading

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.

Deadlines

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.

Handin

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

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