Time: MWF 3:30 - 4:35
Location: Cowel 413
Professor: David Galles
Office: HR 542
Office Hours: MW 1:00 - 2:00
T 10-11:30 or by appointment
Though these are my stated office hours, I am in my office most of the day.
If my door is open (and it usually is), I am happy to talk with students.
There is no text for this class, but extensive class notes will be provided.
Computer Science 112, Introduction to Computer Science II
Math 201, Discrete Math
Finals and Midterms:
Both midterms and the final will be closed notes.
||Every 1-2 Weeks
|Final:||20%|| 5/11/2013 5:30 pm (Saturday)
If there are any problems with the above midterm dates, if you let me know about them in the first week of school then the timing can be flexible. The earlier we know about problems, the easier it will be to resolve them to everyone's satisfaction.
You must turn in hardcopy printouts of the source files and all required test runs, as defined in the project handout, at the beginning of class on the due date. In addition, you must submit your code to the proper subversion repository. Details on electronic submission will be given with the first assignment.
Late projects will be accepted on the next class meeting after the due date for up to 75% credit. Projects will not be accepted later than one class meeting after the deadline. After 11:35 a.m. is considered late (In other words, do not skip class to finish an assignment.)
Grades will be assigned on a straight scale, with Approximately
Students are expected to attend class. Topics that are discussed in class but are not in the course notes and do not appear online are fair game for the midterms and final.
Topics to be covered (partial list):
Analysis of Algorithms
Rate of growth: O(n), o(n), Omega(n), omega(n), Theta(n)
Time vs. Space
Stacks & Queues
Arrays vs. Linked Lists
Binary Tree Manipulation
Ordered Binary Trees / Binary Search Trees
Insertion Sort / Selection Sort
Merge Sort / Quicksort
Depth First Search
NP-Completeness (Time permitting)
Binomial Heaps (Time permitting)
Students who complete this course will be able to
- Analyze the O() and Theta() running times of both imperative and recursive algrithms
- Write larger and more complex Java applications
- Understand all of the following algorithms, and implement them in
Binary Search Trees
Heaps (Priority Queues)
- Understand the basics of dynamic programming, and write a memoized version of an algorithm