MCS-375: Algorithms: analysis and design (Fall 2014)
Algorithms, the recipes for solving computational problems,
is the essence of Computer Science.
In this course we will learn
to design, analyze, and prove algorithms correct.
We'll achieve this by studying common combinatorial algorithms
and the general design techniques they illustrate.
We will study algorithms that are
symbolic & discrete, as opposed to numeric & continuous, and
sequential, as opposed to parallel.
We will ask and answer questions such as the following.
- How might a good algorithm for a new problem be found?
- How do we prove that an algorithm actually does what it's supposed to do?
- How do we analyze the resouce usage of an algorithm?
- How do we compare the resource usage of different algorithms
that solve the same problem?
- Which of the many different ways of solving the same problem is better?
We will learn these skills
almost exclusively by working concrete example problems,
introducing the tools as we discover uses for them.
Although this course is of great practical utility,
we will focus on honing our abilities of
design and mathematical analysis of data structures and algorithms
outside of the context of a specific computer platform or programming
language.
Prerequisite
MCS-178: Introduction to Computer Science II,
and
MCS-256: Discrete Calculus and Probability
Text
The official textbook is
Introduction to Algorithms, 3rd edition,
by T.H. Cormen, C.E. Leiserson, R.L. Rivest & C. Stein; McGraw-Hill, NY, 2009.
I'll also be distributing my own lecture notes to supplement the text.
References
The following books are suggested for supplementary reading.
They are available from the library or from me.
-
Algorithm Design,
by Jon Kleinberg and Éva Tardos; Pearson/Addison-Wesley, 2006
-
Algorithms,
by Sanjoy Dasgupta, Christos Papadimitriou,
and Umesh Vazirani; McGraw-Hill, 2007
Reaching me
The class web page is at
http://homepages.gustavus.edu/~sskulrat/2014F-375/index.html.
Office hours, contact and schedule information can be found there.
I'll keep it updated with any temporary changes to my schedule.
If my office door is open you are welcome.
If I'm busy, we'll set up an appointment.
Email and phone calls work too.
Honor
You are expected to uphold the Gustavus Honor Code
and abide by the Academic Honesty Policy.
A copy of the honor code
can be found in the
Academic Bulletin
and a copy of the academic honesty policy can be found in the
Academic Polices section of the Gustie Guide.
A first violation of the honor code will result in a grade of 0
on the paper, homework, or exam in question.
Any further violations will result in an automatic F for the course
and a notification to the Dean's Office.
Assignments and Grading
There will be regular homework assignments (40%),
and exams (60%) consisting of two intra-term exams and a final.
All exams are closed book and in-class.
If you get 90% or more of the points,
you will earn an A, 85% for an A-,
80% for a B+ and down by 5 percentage points each to the lowest
passing grade of 35% for a D.
There is no curve.
I encourage you to work with other students on the homework provided
that you do so in such a way that every one in your group learns the
material.
The most effective way to do this is to first discuss each problem
as a group and then have each person work on the problem individually.
When you're done (or stuck) compare your work and discuss it.
Remember that doing the homework is how you learn the material;
and that you are not allowed to work cooperatively on tests.
If you do work with other students on the homework, I would like
you to follow these guidelines:
- Each person should write up the answers independently.
- Each person should be able to work each one of the problems independently.
- Each person gives credit to the others who helped.
Give credit to any people and/or any other reading sources
that help you find solutions,
be they textbooks, journals, or internet postings.
Be explicit and acknowlege clearly what sort of help you received.
Failure to do so will be considered cheating.
Disability Services
Gustavus Adolphus College is committed to ensuring the full participation
of all students in its programs. If you have a documented disability
(or you think you may have a disability of any nature) and, as a result,
need reasonable academic accommodation to participate in class, take tests
or benefit from the College's services, then you should speak with
the Disability Services Coordinator, for a confidential discussion of
your needs and appropriate plans. Course requirements cannot be waived,
but reasonable accommodations may be provided based on disability documentation
and course outcomes. Accommodations cannot be made retroactively; therefore,
to maximize your academic success at Gustavus, please contact Disability Services
as early as possible.
Disability Services
(www.gustavus.edu/advising/disability/)
is located in the Academic Support Center.
Help for Multilingual Students
Support for English learners and multilingual students is available
through the Academic Support Center's English Learning Specialist
(www.gustavus.edu/advising/).
The ELS can meet individually with students for tutoring in writing, consulting
about academic tasks, and helping students connect with the College's support systems.
The ELS can provide students with a letter to
a professor that explains and supports appropriate academic arrangements
(e.g., additional time on tests, additional revisions for papers).
In addition, English learners and multilingual students can seek help from peer tutors in the Writing Center
(www.gustavus.edu/writingcenter/).
Topics
A tentative outline of topics is as follows:
- Computation Machine Model & Asymptotics:
RAM machine model,
worst case asymptotic analysis
- Exponential Algorithms for NP problems:
Subset Sum, TSP, Graph Isomorphism,
Backtracking
- Data structures:
binary heaps,
red-black trees,
splay trees,
augmented search trees
- Searching & Sorting:
binary search,
insertion sort,
selection sort,
heap sort,
tree sort,
quick sort
- Greedy algorithms:
activity scheduling,
Huffman's algorithm
- Dynamic programming:
recurrences,
longest common subsequence,
matrix chain multiplication,
optimum binary search trees
- Graph & network algorithms:
depth-first search,
breadth-first search,
strongly connected components,
shortest paths,
minimum spanning trees
- Number theory and cryptography:
Euclid's algorithm,
modular exponentiation,
RSA cryptosystem,
primality testing
- Approximation algorithms:
vertex covers,
precedence-constrained scheduling,
travelling salesman problem