CS 312 – Algorithm Analysis

Syllabus

 

Fall 2009, TuTh 9:30-10:45am, 134 TMCB

Professor: Tony Martinez, 3326 TMCB, 422-6464, http://axon.cs.byu.edu/~martinez

martinez at cs.byu.edu

Office Hours: by appointment

 

TA: Kimball Germane, e-mail: cs312tafall2009<at>gmail.com, Office: CS 312 Cubicle #22 in 1058 TMCB (basement)

Office hours: M 3-4pm, Tu 12-1pm, Wed 12-1, 2-3pm, Th 3-4pm, Fr 12-1pm

 

Website: http://axon.cs.byu.edu/~martinez/classes/312/

 

Goals:  Analysis of algorithms from both a practical (programming) and theoretical (mathematical) point of view.  Understanding of algorithm efficiency in terms of both time and space.  Understanding and proficiency with fundamental algorithmic paradigms which are critical in efficient programming.  These include divide and conquer, Greedy, Graph Exploration, Dynamic Programming, Linear Programming, Branch and Bound, and Probabilistic Programming.  A side goal is to have an experience with Visual Studio and the C# programming language.

 

Prerequisites:  CS 240, CS 252

 

Text: The textbook for the class is Algorithms by Dasgupta, Papadimitriou, and Vazirani.  It is also available online here.  There will also be a few supplemental handouts available from the schedule page.  You are expected to read the assigned literature before and optionally after the scheduled lecture.

 

Programming Projects:  There will be seven projects throughout the semester, some of them more challenging than others. For each project, you solve a concrete problem by implementing an algorithm in such a way as to meet a conservative performance requirement. A reasonable implementation will sail through the performance requirement. You will prepare a typed report electronically according to the guidelines for each project. You will answer questions posed in the project guidelines and usually report the results of an empirical analysis of your algorithm. Submission: All project reports should be prepared in PDF format and submitted via e-mail to the TA on or before 5pm of the published due date.

 

All projects will be done in C# using visual studio.  This software is installed in all open lab machines and can also download the full visual studio for free if you are a BYU student,  Also, anyone can download C# express which takes much less space and has everything you will need for the projects.  Follow this link for more information on installing and using C# and visual studio.

 

Improvement: Furthermore, during the semester you will identify an opportunity to make a significant improvement to one of your projects.  During the course you may see a better way to solve a problem from an earlier project.  Solving an earlier project with a better algorithm is the central requirement of the semester-end improvement report. Improvement also entails implementing a better solution according to some metric, including running time, memory consumption, or applicability to more problems. Simply tweaking your algorithm to give better performance is not sufficient; there must be a substantial change in the algorithms or data structures used in your solution to the problem at hand. In addition to making your solution better (but not in place of improving your algorithm), you may also include a nice visualization tool for observing the behavior of the algorithm as it runs. We include several improvement suggestions with each project; you may consider any of those as options. Ideas will also be proposed from time to time in class. You are not restricted to the ideas accompanying each project guidelines document or mentioned in class. Proposal: You must submit a (maximum) one page typed proposal for your improvement by the proposal deadline, and your proposal must be approved by the instructor prior to proceeding. Improvements not preceded by an approved proposal will not be graded. Report: You will satisfy the improvement requirement by writing a (maximum) 3 page report describing your improvement, your objective for the improvement, and an empirical analysis demonstrating that you accomplished your objective. Submission: the improvement proposal and report should be prepared in PDF format and submitted by e-mail to the T TA on or before 5pm of the published due date.

 

Homework: Regular homework assignments are posted on the schedule and announced in class.  Changes to the existing homework schedule are inevitable and will be announced in class and posted to the website.  Homeworks will help solidify concepts learned during the lecture and from the required reading.  Often the homework will help you prepare to succeed on your projects as well. A reasonable attempt, even though incorrect, at a homework will earn at least half credit.  ÒReasonableÓ means that you show your work and justify your answers. Unless you are having fun, do not spend more than two hours on a non-project homework assignment.  Homework assignments are due on paper at the beginning of class on the due date specified on the schedule.  Keys for the homework will be published on Blackboard after their due date.

 

Exams:  There will be one mid-term and a final exam.  The mid-term will be in the testing center and the final will in class at the university appointed time.

 

Working together:  You are encouraged to work together on studying for exams and discussing lectures and homework assignments.  You may also discuss together ways to do your programming projects and compare results, etc.  However,  you must do your own work when it comes to writing out homework answers and coding for your projects.  If you work closely with one or more students on a project or homework, list the names of those students on the project or homework.

 

Grading (~):  The first project is simple and will be given less weight than the others.   Grades will be posted on Blackboard.  Grading is on a curve.  The approximate breakdown is

 

Homework

12%

Projects

40%

Improvement

8%

Mid-term

20%

Final

20%

 

Late assignments:  Homework assignments are not accepted late, as they are meant to keep you up to speed on lectures.  Late projects will be marked off at 10%/school day late.  Each late day ends at midnight.  Thus, after 10 days late no credit will be possible.  However, if you have any unusual circumstances (sickness, out of town, unique from what all the other students have, etc.), which you inform us of, then we will not take off any late points for homework or projects (This should be extremely rare).  Nothing can be accepted after the last day of class instruction.

 

Topics, Readings, Projects, and Homework Schedule:

University and Other Items: