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 combinatorial problems (e.g. sorting, network optimization, string search), and study classic data structures to support their solution. Following the text, we'll emphasize an abstract approach: We give algorithms in pseudocode, carefully prove their correctness, and then analyze their performance. We'll also be implementing some of our ideas in Python.
Prerequisites: MATH 121; at least one of MATH 112 and MATH 113
Instructor: Jim Fix, email@example.com, Library 314.
Week 1-2: Overview of course. Sorting case study.
I've chosen Scala as the programming language for both of my
300-level courses. It has features found in Haskell and also
those found in Java; I'm seeing real advantages to this combination,
and to you having a large cohort (other MATH 382 students and also
those taking MATH 384) learning the language together. Having everyone
in the class use Scala (as opposed to allowing any language of choice)
allows me to provide infrastructure for the projects and also to give
specific implementation advice in lecture.