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:
Understand the correctness of, and analyze the running times of, different algorithms.
Use different algorithm-design techniques, including, but not limited to, greedy, divide-and-conquer, and dynamic programming techniques, to solve particular problems.
Model real problems abstractly using the language of graphs and flows.
Solve problems by reducing to other problems whose solution is known, and show that problems are hard by reducing from other problems.
Make intelligent decisions about alternative data structures and algorithmic techniques in the context of practical problems, choosing from existing data structures and algorithms or designing your own when necessary.
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:
Cormen/Leiserson/Rivest/Stein: Introduction to Algorithms.
Kleinberg/Tardos: Algorithm Design.
All lecture notes and videos will be posted online on the course webpage.
The pre-requisites for this course are CSCI-1200 Data Structures and CSCI-2200 FOCS. We will assume that everyone has seen the material in these courses, and will use it as necessary.
The labs involve programming in Python (v3+), and you are expected to be a competent programmer coming in -- the lectures will not discuss any code. The TAs and undergraduate mentors can provide some help on programming issues in lab. The textbook also does not deal with programming issues. You may want to consult your textbooks from previous courses.
Website and Announcements
We will make extensive use of the course website and Campuswire. You are responsible for checking the course website regularly for announcements and course materials, as well as your e-mail for communications related to the class.
Lectures & Videos
Students are highly encouraged to attend all classes. You are responsible for all material covered and announcements made in lecture.
The lecture PDF and Video will be posted on the course webpage after each class, typically before 5pm on each class day.
Your grade will be determined using two components: ExamGrade and AssignmentGrade.
- Exams: There will be two midterm exams in class (see the class schedule for the exact dates), and a comprehensive final exam during finals week. Your ExamGrade is made up to the two midterms (30% each) and the final (40%), for a total of 100%. Exams will be "live" during the 6:45-8:55PM slots on Monday and during the finals week.
All exams are open-textbook and open-notes. You are not permitted to search online, or collaborate or copy from others, which are all breaches of academic integrity.
We will not provide make-up exams unless we receive an excused absence. Any students with special accommodations must notify the instructor during the first two weeks of class with official approval.
Your AssignmentGrade is made up of the following categories:
Labs and HW: Lab assignments and HWs will be given throughout the semester, typically every 1-2 weeks. These can include an implementation component and also written questions. HWs will be due on Thursdays, just before midnight. Labs/HW make up 60% of your AssignmentGrade.
Mandatory Recitations and Office Hours: Students are required to attend the recitations held by the TAs and Mentors every wednesday, during the slot corresponding to your section. Make sure that the TA/mentors have recorded your attendance. The goal of the recitation sections is for the students to seek help and ask questions about the HW/lab during those office hours, and also any other questions they may have about the course material. You must start your HW/labs before wed, since this is your chance to clarify any doubts in a live session. Recitations make up 20% of your AssignmentGrade.
Lecture Viewing and Quizzes: Lectures will be posted with post-class quizzes. You can attempt only once, since the correct answers are already indicated. You are not allowed to share the correct answers with other students. The post-class quizzes make up 20% of your AssignmentGrade.
Your final grade will be the minimum of your exam grade and assignment grade. Students are encouraged to participate in the class via attendance, discussions, and engagement on the Campuswire forum. Bonus engagement points will be awarded to the students in proportion to their participation. Also, participation points will be based on class attendance for those who attend the live class, or percentage of (each) lecture viewed online for those unable to attend the live classes (webex records class attendance and time attended, and the videos record percentage watched, for accurate tracking).
Late Submissions: Most assignments will be due just before midnight on the due date. Students get a total allowance of three late days for the howeworks and assignments for the whole semester. Any part of a late day counts as one day. This late-day policy is intended to cover unanticipated things like minor sickness, exams in other classes, etc., so that you do not have to ask for extensions. No late submissions will be accepted if your budget is exhausted.
The course is online for the entire semester. Students should follow all guidelines from RPI related to health and safety for themselves and other campus members. All illness related accommodations will require officially approved excuse from RPI.
Students who are ill, under quarantine for COVID-19, or suspect they are ill will report that to Student Life. Student Life will verify and notify all faculty who have that student. Once notification is made, all faculty will make every reasonable effort to accommodate the student’s absence and will communicate that accommodation directly to the student. Failure to make an appropriate accommodation for a verified or reasonably suspected case of illness may be appealable under the student grade appeal process. Students who need to report an illness should contact the Student Health Center via email or call 518-276-6287. For student seen off campus, a student may request an excused absence via http://www.bit.ly/rpiabsence with an uploaded doctor's note that excuses them.
Students must work independently on all course assignments. You may consult other members of the class on the assignments, but you must submit your own work. For instance you may discuss general approaches to solving a problem, but you must implement the solution on your own (similarity detection software may be used). Anytime you borrow material from the web or elsewhere, you must acknowledge the source. Copying and pasting from published sources or the internet is considered plagiarism and is not acceptable. Plagiarized work will receive an automatic grade of zero.
Student-teacher relationships are built on trust. Acts which violate this trust undermine the educational process. The Rensselaer Handbook of Student Rights and Responsibilities and The Rensselaer Graduate Student Supplement define various forms of Academic Dishonesty and procedures for responding to them. Submission of any assignment that is in violation with these policies will result in a penalty that is deemed by the instructor to be appropriate to the infraction ranging from a grade of zero on the assignment in question, to failure of the class as a whole. The student will also be reported to the Dean of Students or the Dean of Graduate Education as appropriate. Note that academic dishonesty will be dealt with severely and will be reported to the Dean of Students. If you have any questions concerning this policy before submitting an assignment, please ask for clarification.