| Math 382: Algorithms & Data Structures |
|
This course is an in-depth study of the design and analysis of algorithms and data structures. We will look at ways of solving problems by a computer (e.g. sorting, combinatorial optimization on graphs), and study classic ways of organizing data to support their solution. Particular emphasis will be placed on expressing algorithms abstractly using pseudocode, proving their correctness, and analyzing their running time and memory requirements. We will also implement many of our ideas on a computer. Prerequisites: MATH 121 & 211 and basic programming proficiency. This should include familiarity with basic linked data structures and recursion.
Meets: 11:00am MWF in Physics 240A.
Instructor: Jim Fix
Required Text
Assignments
Misc
Course Outline
Week 1: Introduction. Sorting. BubbleSort. MergeSort.
Responsibilities and Evaluation
There will be weekly or semi-weekly written homework
assignments based on the lecture and reading material.
In addition, there will be three implementation projects.
The homework and projects will be a significant portion
of the final evaluation.
There will be a take-home mid-term exam and a final exam
worth approximately 15-20% and 20-25%, respectively.
Late work will not be given full credit.
Computing Resources and Tools
My preference would be that students use the Java programming language
since this is the natural continuation from MATH 121.
It also allows me to provide infrastructure for some of the projects,
and execute them on my machines. However, if you have a strong
preference to code an assignment in another language and system,
talk to me. Note: my preference for Java is waning this semester.
Sun's Java Development Kit is available on the UNIX servers, the Linux
machines in L-382, and on the Macs in the IRCs. Sun's JDK includes
the
You can get an account and access to the machines and lab in L-382.
These machines run Linux and have many useful development tools
and more. I recommend using this course as an opportunity to become
facile with Unix/Linux if you have not already. To obtain L-382
access, talk to me at the beginning of the semester.
Course Mailing List
I will use
|