CS 2150 Syllabus Spring 2012



Course Home Page: http://www.cs.pitt.edu/~kirk/cs2150/


Class Meeting:  Monday, Wednesday, 10:00 - 11:15 and Friday 4:00 - 5:15  5313 Sennott Square


Instructor: Kirk Pruhs

Office: 6415 Sennott Square

Phone: 624-8844

Email: kirk@cs.pitt.edu

Office hours: Whenever  you can catch me on Monday, Wednesday, Friday. After class on Mondays and before class on Fridays should generally be good times.

 

 

TA: Daniel Cole

office     : Sennott Square 6506

e-mail     : dcc20@cs.pitt.edu

Office hrs :  10-1 Tuesdays and Thursday

Text: Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein. Note that this is the third edition of the text. Although an older edition would probably work reasonably well.


Prerequisites: Enough mathematics to be admitted to the CS grad program. This includes: 3 semester of calculus, 1 semester linear algebra, 1 semester of probability/statistics that uses calculus, and at least a semester of discrete mathematics. You should also have an undergraduate algorithms classes comparable to CS 1501 and CS 1510. You should be able to recognize a valid mathematical proof, and know how to construct a simple valid proof on your own. You should understand first order logic.


These are the bare minimum prerequisites. These prerequisites are really required. I will spend practically no time reviewing the prerequisites. 


Goals of the Course: In approximate order of importance: (1) learn how to think algorithmically, (2) learn how to be your own adversary (3) learn a little about the research process (4) learn how to think on many levels at the same time, especially on the program and algorithm levels, (5) learn widely applicable algorithms design and analysis techniques, and (6) learn some of the more commonly used algorithms.


We will concentrate more on understanding the basics at a reasonably mature level rather than on more advanced material. This is NOT a survey class of useful algorithms, nor will we discuss many lower level implementation issues. The class is targeted toward PhD/professional computer scientists. The goal is to prepare all students to be able to read and understand reasonably sophisticated algorithms papers, and to prepare some students to be able to design and analyze new algorithms on their own. My goal is to get as many people to the A level as possible.


Course Grading: The grades will be based on a final exam, on written homework, and on class participation. There will be homework due almost every day. 40% of the grade will be based on the homework. Homeworks will be graded on a 3 point scale, with a score of 3 meaning that the solution was written clearly and was correct in all important aspects (although there may be minor issues), a score of 1 generally meaning that there is a substantive error/problem but the right general direction was being pursed; scores of 2 will be rare. To help students better appreciate the difficulty of grading/reading poorly written algorithm design and analysis, they may be asked to grade some homeworks.  50% of  the grade will be based on the final exam. 10% of the grade will be based on class. Attendance will be taken, and students will lose 1% for each class that they miss. In principle, it is possible to miss many classes and get an A, but no one has ever done this. There is no set numbers of A's, B's etc. I strongly suggest you cooperate with each other to understand the material; This is in everyone's best interests. My experience is that individual students grades are positively, not negatively, correlated.



Missing tests: If you are going to miss a test for unavoidable reasons you must contact the instructor before the exam.

Homework Policy:  Homework may be done in groups of 2 to 3 students. If you want to do homework in a group of size not 2 or 3, you need to clear this with the instructor. Students will be expected to work on the problems with their group. Although students may collaborate with students in other groups, the group should submit one solution per problem. Students may not seek solutions to homework problems from any source external to the textbook and other students in the course (this includes the www, students at other universities, other textbooks, academic papers, etc.), but the students may seek background material not specifically addressing the solution to the individual problem.The solutions must be written using LaTeX, one file per problem. You should use plain, vanilla LaTeX that doesn't require any external files. You need not give all the low level details, but should write in enough detail so that another student could understand your proposed solution.   At the end of each problem write-up you must state who you worked with on the problem. The write up should start with a statement of what will be given in the solution, e.g. "We give an O(n  log n) time algorithm for the problem of finding the median." Hard copy of the homework solutions are due at the start of class.

Tests will in large part be based on the homework. It is very important that you do the homework, you learn by doing, not by watching others do.