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

       

Why Abstract Thinking Matters Now More Than Ever

One's own subconscious - which generates brilliant insights - needs to be spoken to not in code, but at a higher abstract level. This is needed now more than ever. AI, which now codes better than students ever will, needs to be directed at this same higher abstract level so that it can translate our intent into actions and code. Although top institutions attract top math students, many students struggle with heavy math. Jeff has always prided himself on reaching them by stripping away intimidating jargon and teaching through powerful intuition, games, and meta-algorithm techniques (like loop invariants and recursion broken down "one day at a time").

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   
00) Building a Computer from Sand 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)