Jeff's Courses Thinking Abstractly About Algorithms
                   Jeff's Lecture Material
                   List of Topics.ppt

       

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.)

Courses
Machine Learning
Math1090 Logic for Computer Science
EECS3101 Design and Analysis of Algorithms
EECS6111 Advanced Algorithm Design and Analysis
EECS2011 Fundamentals of Data Structures
EECS2001 Introduction to the Theory of Computation
EECS4111 Computability and Complexity
Some of Jeff's Especially Fun Lectures


Machine Learning Made Easy
description: The basic math needed to understand machine learning
0) Python/Labs    slides   
1) Introduction to Machine Learning    slides    video
2) Algebra Review slides video
3) Generalizing from Training Data slides video video
4) Reinforcement Learning Game Tree / Markoff Chains    slides video
5) Dimension Reduction & Maximum Likelihood slides video
6) Generative Adversarial Networks slides
Some Practical Considerations slides video
7) Ethics slides video


Logic for Computer Science
Math 1090 (1st year)
     Before a student can understand or prove anything in mathematics, it is essential to first be able
     to represent it in first order logic. Then they need to be able to deeply understand what it means
     and how to both formally and informally prove such a sentence.


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)