Time:  2:003:15 PM, Tuesdays and Thursdays 
Place:  EE 316 
Instructor:  David Luebke (Olsson #219) Office hours: Mondays 23 PM, Wednesdays 3:304:30 PM 
Assistants:  Emily Evans, eje2a@cs.virginia.edu
Weilin Zhong, wz5r@cs.virginia.edu Office hours: Tuesdays 3:306:30 PM, Thursdays 3:305:30 PM (CS Library) 
Assignments: 

Format:  Two lectures per week, with several homework assignments and two or three tests. 
Prerequisites:  Grades of C or better in 216 and 302. These prerequisites will be strictly enforced. 
Description:  This course will provide a rigorous introduction to the design and analysis of algorithms. We will discuss classic problems (e.g., sorting, traveling salesman problem), classic algorithm design strategies (e.g., divideandconquer, greedy approaches), and classic algorithms and data structures (e.g., hash tables, Dijkstra's algorithm). We will also analyze algorithm complexity throughout, and touch on issues of tractibility such as "NPCompleteness". 
Texts: 

Handouts:  None as of yet. 
Lectures:  A tentative schedule of lecture topics is given below. Since
this is the first time I have taught this course, I do not have a good
feel for how long various topics will take. You should expect the
actual lecture dates to shift. If we get ahead of schedule, we will
add some "culture" topics from fields such as computational geometry and
computer graphics.
Note that though the schedule below only has two tests, I may add a
third to space out the material more.

Grading:  The final grade will be calculated as a weighted average:
I also reserve the right to institute quizzes (announced or unannounced). 
Late Assignments:  Assignments are always due by midnight of the due date. Assignments one day late subtract 10%; two days late loses 30%. After 2 days the assignment will be considered a zero. 
Honor Code:  The honor code applies to all work turned in for this course. Regarding homework: assignments are designed to facilitate your learning of the concepts; it is important that you understand the solutions to all problems, and the best way to gain an understanding is to work them out and write them up by yourself. However, there are occasions when outside help can be beneficial. Hence the policy: you are free to talk to others about problems at your discretion (though we strongly suggest you do this only when completely stuck), but you may not leave a meeting with any type of record of or notes pertaining to the discussion. (If you can recall the solution from memory, you probably understand it.) The actual writeup must be done entirely by yourself. 