CS 430: Introduction to Algorithms
CS 430 is an advanced undergraduate-level course on the design and analysis of algorithms. Broadly, the course has three objectives. First, you are expected to learn how to abstract a real-world computational problem into a mathematically clean core. Second, once the problem has been distilled to its essence, you should be able to identify the algorithm design techniques appropriate for the context, based on the structure of the problem. Third, you are expected to learn to mathematically analyze the solutions you have designed, and quantify the relative merits of various design choices.
To achieve these goals, you will be exposed to an array of algorithm design techniques as well as mathematical techniques for analyzing algorithms. You will also be asked to design, analyze, and experiment with many algorithms yourself. In addition, you will do a project where you will take a practical problem, frame it in terms of a series of algorithm design questions, analyze the solution and justify your design choices, and finally implement the solution in a software system.
This class meets at SB 104, on Mondays 6:25 pm - 9:05 pm, and Wednesdays 6:25 pm - 7:15 pm.
Peng-Jun Wan. Email: email@example.com. Office hours: 4-6 pm on Mondays, at Stuart Building 236F, and by appointment.
Every student is expected to access the IIT's blackboard system blackboard.iit.edu. You should check the set of posts to the blackboard regularly during the semester. The blackboard system will also be used to post all course materials including powerpoint slides for lectures, homework assignments as well as sample solutions.
Reasonable accommodations will be made for students with documented disabilities. In order to receive accommodations, students must obtain a letter of accommodation from the Center for Disability Resources. The Center for Disability Resources (CDR) is located in 3424 S. State St., room 1C3-2 (on the first floor), telephone 312 567.5744 or firstname.lastname@example.org.
We will give out about eight problem sets. Late homework will generally not be accepted. If there are extenuating circumstances, you should make arrangements at least 48 hours in advance with the instructor. Only serious excuses will be considered in cases where prior arrangements were not made. You should be as clear and concise as possible in your write-up of solutions. Understandability of your answer is as desirable as correctness, because communication of technical material is an important skill. A simple, direct analysis is worth more points than a convoluted one, both because it is simpler and less prone to error and because it is easier to read and understand. Points may be subtracted for solutions that are too long. Partial credit is only given for answers that make significant progress towards correct solution.
Collaboration and Honesty Policy: Collaboration on homework problems, with the exception of programming assignments, is permitted, but not encouraged. If you choose to collaborate on some problems, you are allowed to discuss each problem with at most 3 other students currently enrolled in the class. Before working with others on a problem, you should think about it yourself for at least an hour. Finding answers to problems on the Web or from other outside sources (these include anyone not enrolled in the class) is strictly forbidden. You must write up each problem solution by yourself without assistance, even if you collaborate with others to solve the problem. You must also identify your collaborators. If you did not work with anyone, you should write "Collaborators: none." It is a violation of this policy to submit a problem solution that you cannot orally explain to an instructor or TA. No collaboration whatsoever is permitted on exams. Violations of this policy will be dealt with according to University regulations.
Examinations and project
In addition, we will have two exams as well as a couple of mini-projects (we will announce details about these later).
The breakdown of credit in the course is as follows: