Ananya Das Christman
Office Hours: Mon, Fri: 1:30pm - 2:30pm, Wed: 2:30pm - 3:30pm (and by appointment)
Office: Room 209 Shannon
Section A: MWF 10:10am - 11:00am, Room 203 Shannon
Section B: MWF 11:15am -
12:05pm, Room 203 Shannon
Link to Course Schedule
This course will
focus on the design and analysis of algorithms. Topics include
divide and conquer, graph algorithms, randomized algorithms,
dynamic programming, and NP-completeness. We will also cover
basic techniques for analyzing the efficiency of algorithms.
No required text but the following is a good reference and on reserves at Armstrong Library:
Introduction to Algorithms, by Cormen, Leiserson, Rivest, and Stein (CLRS). 3rd edition, Addison Wesley, 2009.
Some homework problems may come from this book.
Assignments will be due on Mondays, Wednesdays, and Fridays so evening tutors will be available (at least) on Sundays, Tuesdays, and Thursdays.
More info will also be posted at go/cstutors.
Much of what is learned in this course will be from trying to solve the homework problems, so make a conscientious effort to complete them well. Some of the problems may be quite challenging so do not be surprised if some of them stump you; you are not expected to solve every homework problem perfectly.
In previous CS courses you may have encountered problems that ask you to apply an algorithm (or technique) to a sample set of data, for example: ''Show the ordering of a preorder traversal on the following tree...'' or ''Draw a Min Binary Heap with the following values...'' While these problems are really good at testing whether you understand an existing algorithm, you will rarely see problems like these in this course. Instead, the majority of the problems will ask you to develop a new algorithm. Since every problem is different, there is no set of steps for designing a new algorithm - you simply have to come up with an idea and check if it works; if it doesn't, go back and try something new. This process requires creativity and more importantly, lots of trial and error, so be prepared to spend a good amount of time on the problem sets. The more you practice coming up with and trying new algorithms, the better you will get at designing them.
solutions should be concise, correct, and legible.
Understandability of the solution is as necessary as
correctness. Expect to lose points if you provide a
"correct" solution with an unclear write-up. As with an
English paper, do not expect to turn in a first draft: it takes
refinement to describe something well. If you can't solve a
problem, briefly indicate what you've tried and where the
difficulty lies. Don't try to pull one over on me. :)
Problem sets will be assigned roughly every 1.5 weeks, due by the first 5 minutes of class typically using the following schedule: if an assignment is out on Monday, it will be due the following Wednesday; if out on Wednesday, due the following Friday; if out on Friday, due the Monday after the following Monday. You are encouraged to discuss homework problems with classmates, but you must write up your solutions independently. Homework submissions must be typed. I encourage you to use LaTex, but you may use any editor.
Written homework submissions must:
If you are submitting a homework late and on a day when our class does not meet, please bring it to my office by the appropriate time (i.e., start of class time for 1 late day).
After each homework solution is posted (three days after the assignment's due date), you will have the opportunity to earn back a portion of the points that you may have lost on the assignment. After reading and understanding the homework solutions, you may submit a reflection identifying and explaining your errors. Your reflection will be graded by one of your peers using a simple rubric to earn 50% (excellent), 30% (good), 15% (so-so), or 0%(gibberish/garbage) of the points back. (I will provide more details on both the reflection and the grading rubric).
There will be two midterms and one final.
Midterm 1: Tuesday, October 15, 6-7:30pm (tentative)
Midterm 2: Tuesday, November 19, 6-7:30pm (tentative)
Section A: Tuesday, December 10, 9:00am-12:00pm
Section B: Wednesday, December 11, 7:00pm-10:00pm
Since many of the topics covered in this class will not be directly from the textbook, it is extremely important for you to attend the lectures. Class attendance and participation will also make up a small but important portion of your grade. Your attendance/participation grade will be based on your attending class regularly and showing evidence that you are actively engaged in the class.
Please keep in mind that if you do miss class, you are responsible for any missed material. I will not reiterate material that has already been covered solely for students who missed the original lecture. If you miss class, you are certainly welcome to review topics with me during my office hours, but please do so only after reviewing the notes on line and discussing them with a classmate who was present during the lecture.
You will be allowed three late days for the semester (including weekends/holidays). You must notify me before the due date if you are planning to use a late day (no exceptions). After the three late days, no late assignments will be accepted.
Computer and Cell Phone Policy:
You may use desktop or laptop computers (quietly) during lecture to take notes. You should not use computers during lecture for any other purposes (e.g. email, web browsing, games, work for other classes, etc.). You may not use cell phones during lecture, lab, or exams.
Academic Honor Code:
Any form of plagiarism, including copying others' solutions or solutions posted on the web, is considered a violation of the honor code and will be heavily penalized. Note that allowing someone else to copy your solutions also violates the honor code. Any assignment that shows signs of plagiarism will be investigated and reported if necessary. Violations will result in a homework grade of 0 and will be reported to the academic judicial board.