1. Course Overview
This course presents fundamental ideas and techniques of modern algorithm design and analysis. After completing this course, students should be able to analyze and design efficient algorithms for a variety of computational problems. Students will learn a variety of algorithm design techniques, how to apply them to different problems, and how to choose which technique should be used for which problem.
The goal of this course is to provide a strong foundation in algorithms in preparation for jobs in industry or for more advanced courses. Algorithms are the basic language of computer science. After taking this course, you, the student, should be able to:
The required course textbook is Algorithms by Dasgupta, Papadimitriou, and Vazirani. See also the textbook errata.
Although the lectures will mostly be drawn from the textbook, we will still cover things that do not appear in the text, and the textbook includes material that we will not cover in class. You are responsible for the content of the lectures as well as any assigned readings. You may also find the following books useful for reference and for different perspectives:
The pre-requisites for this course are CSCI 1200 and 2200. We will assume that everyone has seen the material in these courses, and will use it as necessary.
This is not a programming class. Some of the homeworks involve programming, but you are expected to be a competent programmer coming in -- the lectures will not discuss any code. The TAs and undergraduate programming mentors can provide some help on programming issues in office hours, but you should be able to answer your own programming and debugging questions. The textbooks do not deal with programming issues almost at all. You may want to consult your textbooks from previous courses.
2. General Class Policies
Website and Announcements. We will make extensive use of electronic communication and the course website. You are responsible for checking LMS regularly for announcements and course materials, as well as your e-mail for communications related to the class. When submitting homeworks and exams, it is the student's responsibility to check that your submission successfully occurred (by submitting early enough and clicking on the file you submitted to verify that it successfully uploaded and that you submitted the correct version), and in case of any issues, to keep the receipt email sent by the LMS with the submission confirmation ID.
Lectures. Students are highly encouraged to attend all classes. You are responsible for all material covered and announcements made in lecture.
Exams. There will be two midterm exams (see the class Schedule for the exact dates and times), and a comprehensive final exam during finals week. All exams are open-textbook and open-notes, but using electronic devices, searching online, collaboration, using AI tools, or copying from others are not allowed and would be considered a breach of academic integrity. We will not provide make-up exams except for official excused absences; if a make-up exam cannot be taken within one week time, then the final exam grade will take its place. Any students with special circumstances must notify me during the first two weeks of class.
Grading. We will give an approximate grade breakdown in the middle of the semester, but you are responsible for keeping track of your own grades by asking the TA during lab or by checking LMS. If there is any error with your recorded grades, you must notify the instructor within one week of the grade being recorded on LMS.
Final Grades: The final class grades will be assigned as follows.
To compute your ExamAverage, count each of the Midterm Exams as 30 percent, and the Final Exam as 40 percent.
To compute your AssignmentAverage, count the Homeworks as 90 percent, and Office Hour attendance as 10 percent. The lowest homework grade and office hour attendance grade will be dropped.
Your FinalScore equals your ExamAverage, so all assignments other than exams have no effect on your final grade, with the following exception. To receive a passing grade for the course, your AssignmentAverage must be at least 70 percent.
Your FinalScore corresponds (approximately) to the following letter grades: A/A-: 85+; B+/B/B-: 75+; C+/C/C-: 65+; D+/D: 60+.
In other words, to pass the class you must do well on both the exams and the assignments. However, doing perfectly on the homeworks is not required: the homeworks are for you to practice solving problems, receive feedback, and learn from in preparation for the exams. Exams and assignments will not be curved, but the final semester grades may be curved (only to improve your grades).
Regrades: Any request to re-evaluate a grade must be made within one week of the return date of the homework or exam in question. You must explain why you think your grade should be changed in writing, and submit your request to an instructor or a TA, together with the original problem solution. The second grade will remain. Your entire assignment or exam will be regraded and your grade may go up or down, or it may stay the same.
Policy on Academic Integrity:
Student-teacher relationships are based on trust. For example, students must trust that teachers have made appropriate decisions about the structure and content of the courses they teach, and teachers must trust that the assignments that students turn in are their own. Acts which violate this trust undermine the educational process. The Rensselaer Handbook of Student Rights and Responsibilities defines various forms of Academic Dishonesty and you should make yourself familiar with these.
3. Homework Guide
Homework Submission, Late Homeworks:
Homework should be submitted on Gradescope as a printable pdf file. As with all assignments submitted online, it is the student's responsibility to verify that the correct files successfully uploaded, and that the files can be read by the graders. The homework should be typed, although you can include hand-drawn formulas or figures. I highly suggest learning and using LaTeX to format your homework. For some resources, I recommend a LaTeX tutorial; for actual writing I suggest either installing MiKTeX or using an online editor like Overleaf. LaTeX abilities will be useful for you far beyond this course, so it is well worth learning.
Each student will be given a budget of three (3) late submissions that they can use to turn in homeworks late. A single late submission can be used to turn in the homework on the following Sunday instead of on Thursday. Any late submission counts as a full late submission. For example, if you submit your homework an hour late, that counts as a late submission, so you might as well wait and submit it on Sunday. You cannot use more than one late submission for the same homework, or use a late submission after already turning something in.
Use your late submissions wisely, if at all. This late-submission policy is intended to cover unanticipated things like short illness, exams in other classes, etc., so that you do not have to ask for extensions. Once you have used up your budget of late submissions you will not be allowed to turn in homeworks late for any reason without an official Excused Absence Letter from RPI.
Writing Proofs and Algorithms:
You are allowed (and encouraged) to discuss homework problems with other members of the class, and to formulate ideas together. There is no penalty for working in groups. However, everyone must write up their assignments separately: do not show each other completed or typed solutions. Make sure that you spend a lot of time thinking about the problems yourself and writing up the solutions; students who only follow their collaborators' lead will find the exams much more difficult.
You may not copy (or near-copy) a solution from another. Failure to write the solution to a homework completely on your own will be considered a breach of academic integrity, and may result in the final grade being reduced by a letter and a 0-grade for the homework for both parties. No collaboration is allowed during exams. It should go without saying that collaborating with people not taking this class, or using any resource other than the class textbook or notes, is a serious breach of academic integrity and will be punished severely.
4. Recitation and Office Hour Guide
Recitations: In addition to the lectures, a recitation video will be made available online during most weeks. These videos are intended to provide you with support for honing your problem solving skills, as well as helping out with homeworks. You are required to view the recitation video. We recommend watching this video before starting on the homework.
Office Hours: Attending your assigned office hours on Wednesday is required and is part of your final grade as described in the grading policies. You can miss one office hour week without penalty. Please make sure the TA or mentor writes your name down before you leave, so you get credit for attending. Office hours led by TAs and mentors will take place every Wednesday: these office hours are your main opportunity for getting individual attention, asking questions about lectures and recitations, getting help on the homework, etc. They are also a good time to work together with other students in the class. We suggest planning to spend your entire assigned two hours at office hours, asking questions and working on the homework which is due that week. (Of course, please feel free to ask the TAs for advice on your homework: this is why they are there!) We will not be answering questions about the homework on the day that it is due (usually Thursday). Because of this, you are required to start the homework and view the recitation video before Wednesday, so that you have the opportunity to get help if you need it.