CS 312 – Algorithm
Analysis
Syllabus Fall 2012
Sec. 1 TuTh 9:30-10:45am, 120 TMCB
Sec. 2 TuTh 1:35-2:50pm, 134 TMCB
Professor: Tony Martinez, 3326 TMCB, 422-6464, http://axon.cs.byu.edu/~martinez
martinez at cs.byu.edu,
Office Hours: by appointment
Course website: http://axon.cs.byu.edu/~martinez/classes/312/
TAs: Richard Morris, Isaac Ellsworth, Derrick White,
E-mail: byucs312ta@gmail.com
Office hours:
Richard (3304 TMCB) M 1-3 W 2-3, Th 12-1
Isaac: (1058 TMCB, cubicle 22) M 10-12, F 3-5
Derrick: (1058 TMCB, cubicle 23) Tu 12-1, 3-4 Th 4-6
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 Algorithms, Dynamic Programming, Linear Programming, Intelligent
Search, 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. To help encourage quality reading, I
will pass around a sheet each day for you to mark whether you have done a
complete and careful reading, a partial reading, or no reading. A
complete and careful reading counts for 2 points, partial gets 1 point, and
none receives 0 points. Each day you will mark if you have done the
reading for the lecture to be given that day. The grading will be
non-linear such that missing one or two readings does not hurt much, but it
picks up fast after that.
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. All project reports should include a copy of your
source code and a screenshot demonstrating the working algorithm. Submission: All project reports should
be prepared in PDF format and be submitted via e-mail to the TA on or by
11:59pm of the published due date, except the group project which is due as a
hardcopy at the beginning of the last day of class.
All projects will be done in C#
using visual studio. This software
is installed in all open lab machines and you can also download the full visual
studio for free since 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.
Homework: Regular homework assignments are posted on the schedule.
Changes to the existing homework schedule are inevitable and will be
announced in class and posted to the website. Homework 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 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 be in class at the
university appointed time. Both
tests will be closed book. You may
bring one page of notes (single sided and with a reasonable sized font). You will hand in your note sheet with
the tests.
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 final solving and writing 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. We have set up a discussion group on BYU CTLÕs Digital
Dialogue for this class which you can join if you would like. You can use this group to post
questions and have discussion with your class mates. The TAs will also monitor this group and answer questions
which come up. This is a good
place to post and ask about performance results so you can see if your solution
is in the Òballpark.Ó This is also
a good place to discuss high level algorithmic issues and also issues such as
how to link into certain libraries, etc.
Remember, that actual algorithmic code or pseudo code should not be
published on this group.
Grading (~): The first
project is simple and will be given less weight than the others. Grades will be posted on BYU
Gradebook. Grading is on a
curve. The approximate breakdown
is:
|
Homework |
14% |
|
Projects |
40% |
|
Reading |
5% |
|
Mid-term |
20% |
|
Final |
21% |
Late assignments:
Homework assignments are not accepted late, as they are meant to keep you
up to speed on lectures, and also because we will immediately post answer keys
after the homework is due. Late
projects will be marked off at 5%/day late (excluding Sundays) up to a maximum
of 50% off. Each late day ends at
midnight. You will be allotted a
total of 4 late days throughout the semester (hopefully, you will not need any
of them). As an incentive, 1 extra
point (out of 100, and up to a maximum of 4 points) will be allotted for each
day (excluding Sunday) you turn in a project earlier than the due date. Finally, if you have any extremely
unusual circumstances (sickness, interview, very 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 rare). Nothing can be accepted after the last
day of class instruction.
Topics, Readings, Projects, and Homework
Schedule: