## Algorithms (CSCI 3104, Fall 2016)Course Information
Class Timings: MWF 11-11:50 AM. Class Location: Fleming 155 Instructor: `Sriram Sankaranarayanan`Teaching Assistants: Wanshan Yang, Ning Gao, and Sebastian Laudenschlager. Course Assistants: Mitchell Block, Michael Condon and Derek Gorthy. Pre-Requisites: Calculus I,II, Data Structures (CSCI 2270) , Discrete Structures (CSCI 2824) and *ability to program in Python*.Office Hours: We will have the following hours: Agile office hours before class on MWF. Instructor will arrive early to class. Sriram Sankaranarayanan, Thursdays 12:30 - 2 PM, ECOT 831. Derek Gorthy: Mondays 2-5 PM and Wednesdays 5-7 PM (CSEL Lab). Michael Condon: Mondays 5-7 PM, Wednesdays 2-5 PM (CSEL Lab). Mitchell Block: Thursdays 2-6 PM and Fridays 10-11 AM (CSEL Lab). TAs: Before/after class and by appointment.
Final Exam: `Wednesday Dec 14th, 7:30 - 10:00 PM`(See here).
AlgoChallenge
News
`August 15, 2016`Course page is live!
## Assignments
## Lecture Schedule and NotesThe schedule of lectures shown below is subject to change. We will post lecture notes for most topics and videos for selected topics. We will strive to post all material well in advance. Please take a look through them, and come prepared for class.
## Course ObjectivesThe key course objectives are as follows: **Learn**a set of ‘‘standard’’ or canonical algorithms for*computational problem solving*. This involvesUnderstanding properties of algorithms. Proving these properties mathematically. Proving rigorous time and space complexity bounds on the performance. Understand the relative merits or demerits of an algorithm, in practice.
**Apply**: Adapt and combine algorithms creatively to solve problems that may arise in practice.Use algorithms to solve core problems that may arise inside applications. Learn key tricks (motifs) underlying the design of new algorithms for emerging applications.
**Innovate**: Create new algorithms for new, previously unseen problems!!
Naturally, the emphasis will be overwhelmingly on learning and application of algorithms. The innovative design of new, previously unknown algorithms is a hard skill to learn (if at all it can be taught in a classroom). The challenge/fun problems will motivate you to practice thinking
through problems to develop problem solving skills and most of
all, ## Topics CoveredRoughly, we will cover the following topics (some of them may be skipped depending on the time available). Introduction to Algorithms: Complexity analysis. Divide and Conquer Algorithms. Sorting and Order Statistics. Advanced Data Structures: heaps, balanced trees and hash-functions. Dynamic Programming. Greedy Algorithms. Graph Algorithms: Search, Minimum Spanning Trees, Shortest Paths, Network Flows. Introduction to Linear and Integer Programming. Some basic geometric algorithms. Basics of Computational Complexity: P, NP, reductions and open problems.
## TextbookWe will primarily use the textbook by Cormen, Leiserson, Rivest and Stein: CLRS Book
Cormen, Thomas H.; Leiserson, Charles E., Rivest, Ronald L., Stein, Clifford (2009) 1990. Introduction to Algorithms (3rd ed.). MIT Press and McGraw-Hill. ISBN 0-262-03384-4. (Available from CU Bookstore or online booksellers). ## Course WorkWe will have weekly assignments that will be based on the assigned reading for each class. The class will also involve creating applications using one or more of the algorithms learned. We will expect the students to pick up programming in Python for completing these assignments. ## Pre-Lecture WorkBefore you attend each lecture, we hope that you will spend 10-15 minutes to prepare: Read the required portion of the book (at least skim through the book or notes provided). Watch any videos posted (instructions will be sent via email).
Some lectures may contain a small 5-10 minute tutorial problem that we will solve as a class. After solving the problem, you are expected to submit it to the instructor. The resulting grade will count for your course participation. ## ForumsWe will set up forums that will allow students to interact with the course staff and with each other. You can participate in the forum and help answer questions posed by your classmates. Doing so counts towards your course participation score. ## Weekly AssignmentsEach problem set will be due in a week from the date assigned. The problem sets will be posted on-line and will be of two types: **Online/Moodle Assignment:**Simple multiple choice questions that will be autograded. You are allowed multiple attempts at solving these problems. They are intended to help you learn by testing your concepts.
**Written (Paper and Pencil) Assignment:**We will have a few longer, more open ended problems. These have to be solved on paper and turned in at the beginning of the lecture on the due date. Each week the TA will reserve an extra 5 points to students who have turned in a legible assignment that is easy to read. In particular, it is strongly suggested that you consider typing out the assignment in Latex/Word OR you copy out the assignment cleanly from your working sheets before turning in.
Written Assignment Submission and Late Policy
Written paper and pencil assignments have to be submitted on paper during class on the due date (typically fridays). Alternatively, the assignment can be submitted to the course box kept in the CS office/mailroom in Engg. Center 7th floor. Weekly assignments will normally be due on a Assignments turned in before the end of the class noon on friday: full credit. Assignments turned in to course mailbox by Friday evening before 5 PM: 10% penalty. Assignments turned in before 10 AM monday morning: 20% penalty.
To be flexible, we will omit ## Programming AssignmentsProgramming assignments will involve writing simple programs to solve interesting problems using the ideas learned in class. These assignments will be used to crystallize some of the concepts that we will cover in this course. We expect these assignments to be completed in Python. Programming assignments are ## ExaminationsThe course will have a quiz every 4 weeks. The dates for the quizzes will be posted well in advance. Each quiz will be 30 minutes long, and will focus on the material corresponding to a set of lectures. The lowest quiz will be dropped for the purposes of computing the grade.
It is compulsory to attend the final exam and score at least a 25% to obtain a pass in this course.
## Alternative Exams/AccommodationsNo alternate exams will be offered unless there is a documented disability or a documented, unforeseen personal or medical emergency. If you need special accommodations of any nature, you are expected to talk to the instructor during the first 2 weeks of the class. You are also expected to subsequently send in a reminder to the instructor at least one week before each quiz stating the accommodation you require. ## Course ParticipationClass participation is awarded based mainly on your class preparation, as judged by your general attendance, classroom behavior, interaction in class, willingness to answer questions in class and at the on-line forums, and demonstrating knowledge of weekly reading during problem solving time. ## GradingThe overall grade will be based on a cumulative score computed by adding together the grades from: The weekly paper and pencil assignments (with least score omitted), The weekly online assignments (with least score omitted), The programming assignments (ideally, we hope to have six to eight such assignments over the semester), The grades from the quizzes (with least score omitted). The *final exam*(require at least a 25/100 to pass the course).Class participation: you are expected to attend class, and in class you are expected to interact with the instructor.
Overall, the contributions to the final grades will be: Weekly paper and pencil assignments (25% of the grade). Weekly online assignments (10% of the grade). Programming Assignments (15% of the grade). In-Class Quizzes (25% of the grade). Final exam (20% of the grade). Participation (5% of the grade).
The instructor reserves the right to modify this breakup as the semester progresses.
The final grades will be ## Collaboration PolicyThe collaboration policy is rather simple: *Inspiration is free*: you may discuss homework assignments with*anyone*. You are especially encouraged to discuss solutions with your instructor and your classmates.*Plagiarism is forbidden*: the assignments that you turn in should be written entirely on your own. While writing the assignment you are not allowed to consult any source other than the textbook(s) for the class, your own class notes or the lecture notes for the class. Copying/consulting from the solution of another classmate constitutes a violation of the course's collaboration policy and the honor code.*Do not search for a solution on-line*: You may**not**actively search for a solution to the problem from the internet. This includes posting to newsgroup or asking experts at other universities.*When in doubt, ask*: If you have doubts about this policy or would like to discuss specific cases, please ask the instructor.
## Honor CodeWe will expect strict adherence to our our
honor code. Please read and
understand the code thoroughly. If in doubt, ask the instructor. At
the end of the day, honor code violators hurt |