CAS CS 330 - Spring 2015 - Introduction to Analysis of Algorithms

Syllabus

Course Description

Official Description: Examines the basic principles of algorithm analysis; techniques of efficient programming; analysis of sorting and searching; graph algorithms; string-matching algorithms; matrix algorithms; integer and polynomial arithmetic; the fast Fourier transform; and NP-hard and NP-complete problems.

Elaboration: This course is about the forest behind the trees: we will focus on the big-pictures ideas that are more readily apparent when one does not need to deal with syntax, pointers, compiling, code structure, etc. We will avoid dealing with such details not because they are unimportant, but because without getting the big picture right there is no point in dealing with the details. While I don't expect each of you to use every algorithm we learn in this class (nor do I expect to be able to cover every algorithm in the official description above), I do expect each of you to carry away the ability to step back and analyze the big picture. I also expect this class to provide you with useful techniques and skills (not the least of which is mathematical maturity). If you need a purely pragmatic reason, consider that problems similar to the ones covered in this class are often asked on CS job interviews.

Prerequisites and Related Courses

The class assumes working knowledge of CS 112 and MA 131, and enough additional preparation with proof-writing and analytical thinking. If you don't have the prerequisites, talk to me before deciding to continue with this class.

Staff

Professor: Leo Reyzin, reyzin@bu.edu, (617-35)3-3283, MCS (111 Cummington St) 135B. Office hours: Tuesdays 2:30-4:30, Fridays 1:30-2:30 (starting Jan 27).
    I encourage you to come to my office hours. If you need to talk to me but can't make the office hours, please use Piazza (see below).
Teaching Fellow: Hannah Flynn, hmflynn@bu.edu. Office hours: Tue 1-2:30, Wed 12-1:30 in the BU CS undergraduate lab (730 Commonwealth Room 302).

Text

Algorithm Design, by Kleinberg and Tardos

Meetings and Other Communication

Lectures are Tuesday and Thursday in CAS (725 Commonwealth Ave) 316. Lecture attendance is required. Students are responsible for all material covered in lecture. Some lecture material may not appear in the text. The whole point of getting your education at a bricks-and-mortar place is the ability to interact, so come to class!

You should have also selected a lab when you registered (if not, add a lab to your schedule!). Labs are a required part of the course. You must be registered in and regularly attend your lab section. If you are unable to attend your lab section, you must send email to Hannah before lab.

The class has a home page: http://www.cs.bu.edu/~reyzin/teaching/s15cs330/. Homework Q&A and class announcements will be handled via Piazza https://piazza.com/bu/spring2015/cascs330/. Please sign up with Piazza ASAP with an email address that you actually check, so that you don't miss announcements ("I didn't get your email" is not an acceptable excuse). Piazza is also the place to post HW questions. Answer your fellow students' questions! Piazza has a wiki-like editing interface where you can collectively improve an answer (and even use LaTeX). Instructors can edit answers, too. The only questions that should go to our email are questions of a personal nature.

Assignments and Tests

There will be about 9 homeworks (mainly problem-solving, perhaps a bit programming) (50%), a midterm (20%) and a final (30%). I reserve the right to deviate from this formula in unusual cases (in particular if your exam performance is significantly lower than your homework peformance, I will consider your homework grade less trustworthy.) The midterm will be in class on March 24. The final exam will be scheduled by the registrar, and is currently tentatively set for Friday, May 8, 12:30-2:30 pm.

Late Homeworks Policy

Every semester I have to manage extension requests from students ("I have a cold," "I have a job interview," etc.). An extension for one student deprives the entire class of the ability to get timely access to official solutions. Therefore, instead, I will drop one lowest homework score you get during the semester. Do not use the dropped grade option without a good reason--if you use it up early and then get a cold later in the semester, it's too late. Exceptions to this policy will be granted only in serious circumstances (such as hospital stays or family emergencies) that I hope none of you will have.

Important Dates

Last day to drop without a W grade: Tuesday, February 24.
Last day to drop with a W grade: Friday, April 3.

Collaboration Policy

Collaboration policy for this class is as follows. The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam score will reflect it.

Violations of Collaboration Policy

Violations of collaboration policy fall into two categories: ones that are acknowledged at the time they occur (for example, in clearly marked comments in your code) and ones that are unacknowledged. Acknowledged violations (e.g., using someone else's code for a method you didn't know how to write yourself, and stating clearly in your code that this is not your own work) will result in an appropriate reduction in the grade, but will not be considered cheating.

Unacknowledged violations of the collaboration policy--for example, not stating the names of your collaborators, or any other attempt to represent the work of another as your own--will result in an automatic failing grade and will be reported to the Academic Conduct Committee (ACC). The ACC often suspends or expels students deemed guilty of plagiarism or other forms of cheating. I have served on the ACC and have seen it happen. I will assume that you understand the CAS Academic Conduct Code (read it if you haven't).

If you are uncertain as to whether a particular kind of interaction with someone else constitutes illegal collaboration or academic dishonesty, please ask me before taking any action that might violate the rules; if you can't reach me in time, then at the very least include a clear explanation of what happened in your homework write-up to avoid being treated as a cheater. Citing your sources is usually the easiest way out of trouble.