Jeff's Courses Thinking Abstractly About Algorithms
               Jeff's Lecture Material

              

Jeff teaches many courses in Theoretical Computer Science from the
second year undergrad to the graduate level. All of these courses
have a large set of power point slides, notes, and questions. Two
of them have Jeff's voice recorded along with the slides. He also
has a book.

These courses teach how to think about algorithms in an abstract way
so that one can talk about them, design new ones, and know that they
are correct. Though Jeff will cover various algorithm as examples,
the goal really is to teach the students to think abstractly about the
key meta-algorithm techniques that everyone should know. These
techniques are abstract enough to apply to most any problem that you
will face in your job and in your life. Jeff has had many graduated
students tell him that his courses were the most useful they had ever
taken. (Request: Jeff tends to talk too fast. Please help him go
pole pole slowly.)

      
Design and Analysis of Algorithms
EECS 3101 (3rd year)
     This course teaches how to think about algorithms in an abstract way
     so that they can talk about them, design new ones, and know that
     they are correct.


Advanced Algorithm Design and Analysis
CSE 6111 (grad)
     This reviews the previous course for our grad students and tries to
     teach them the missing math and algorithms that they should
     practically know.
Fundamentals of Data Structures
EECS 2011 (2nd year)
     This is your basic data structures course with a focus on systems
     invariants and understanding.
Introduction to the Theory of Computation
EECS 2001 (2nd year)
     This course is useful for a graduate student interested in the
     theoretical aspects of computer science.
Computability and Complexity
CSE 4111/5111 (4th year)
     This is more of the CSE 2001 course.
Some of Jeff's Especially Fun Lectures
(fun)