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
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: