Spring 2025
Instructor: Peter Drake
Teaching assistant: Katie Caudill
Meetings: 1:50-2:50 PM MWF, Olin 305
Final presentations: 1-4 PM, Monday, May 5
- Write to the course email list 24/7
- Come to the TA's lab hours, 11 AM - 1 PM, Tuesdays, SQRC (JRHH 134)
- Make an appointment to see me or drop by my office
Géron, Hands-On Machine Learning with Scikit-Learn, Keras and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems, 3rd Edition
There are associated Jupyter notebooks.
Course Policies
Class Notes
In-Class Code
Pythonorama
Glossary
Dank Meme Stash
AI Did Me Dirty
Ripped From Today's Headlines
Social Context Books
This course examines the philosophical, theoretical, and practical issues involved in the design of thinking machines. We will explore techniques used to get computers to solve problems that once were (and in some cases still are) thought to be strictly in the domain of human intelligence. The bulk of the course will focus on machine learning: building systems that can be trained from data rather than explicitly programmed.
The prerequisite for this course is CS 171 (Computer Science I) and either CS 172 (Computer Science II) or DSCI 140 (Introduction to Data Science). You are expected to be proficient with general programming concepts such as variables, if/else statements, loops, and functions.
We will use the Python programming language. If you haven't used it before, you have learned a couple of other languages (probably C and R), so you should be able to pick it up quickly. Take advantage of Pythonorama and the "Getting Help" options above to get up to speed. If you want a textbook on Python, a good choices are Downey, Think Python: How To Think Like a Computer Scientist (free online) or Lubanovic, Introducing Python: Modern Computing in Simple Packages, 2nd Edition.
Upon completing this course, you should be able to:
- frame AI and machine learning tasks as search for a point, path, or policy in some mathematical space.
- discuss the role of AI and machine learning in present-day society, including issues of privacy, bias, and power structures.
- use, implement, explain, and compare classical search algorithms, including depth-first, breadth-first, iterative-deepening, A*, and hill-climbing / gradient descent.
- use, implement, explain, and compare adversarial search algorithms, including minimax and Monte Carlo tree search.
- use, implement, explain, and compare machine learning techniques, including k-means clustering, k-nearest neighbors, linear regression, logistic regression, decision trees, random forests, genetic algorithms, and neural networks (including deep convolutional neural networks).
- explain and address practical problems surrounding machine learning, such as data cleaning and overfitting.
The major components of the course are:
- Individual assignments that you are meant to complete on your own. You are welcome to help each other with concepts, but any code, writing, math, etc. should be your own.
- Pair programming projects that you complete with another student. I will assign you a different partner for each such project.
- Reading and reporting on a book about the social context of AI and machine learning. To keep discussions interesting, and to spare me the tedium of reading dozens of essays on the same book, each student will read a different book.
There are no exams. In place of a final exam, each student will give a very short (5 minute) presentation on the book they read. This will be accompanied by a class discussion.
Flex days are days for you to work on assignments in class. They also serve as a reserve in case of getting behind, instructor illness, inclement weather, etc. Note the links to class notes above.
Day | Date | Lesson |
---|---|---|
Wed | Jan 22 | AI: Should We Be Doing This? |
Fri | Jan 24 | Syllabus and Setup |
Mon | Jan 27 | Python Review |
Wed | Jan 29 | Agents |
Fri | Jan 31 | Flex |
Mon | Feb 3 | Uninformed Search |
Wed | Feb 5 | Heuristic Search |
Fri | Feb 7 | Adversarial Search |
Mon | Feb 10 | Adversarial Search Continued |
Wed | Feb 12 | Monte Carlo Tree Search |
Fri | Feb 14 | Snow Day |
Mon | Feb 17 | The Turing Test |
Wed | Feb 19 | Machine Learning |
Fri | Feb 21 | Linear Regression |
Mon | Feb 24 | Gradient Descent |
Wed | Feb 26 | Logistic Regression |
Fri | Feb 28 | Classification |
Mon | Mar 3 | Decision Trees |
Wed | Mar 5 | Ensemble Learning |
Fri | Mar 7 | Unsupervised Learning |
Mon | Mar 10 | Neural Networks |
Wed | Mar 12 | Backpropagation |
Fri | Mar 14 | Bias and Privacy |
Mon | Mar 17 | NumPy |
Wed | Mar 19 | TensorFlow |
Fri | Mar 21 | Flex |
Mon | Mar 31 | Using BLT |
Wed | Apr 2 | Flex |
Fri | Apr 4 | Deep Learning |
Mon | Apr 7 | Convolution |
Wed | Apr 9 | Flex |
Fri | Apr 11 | Festival of Scholars and Artists |
Mon | Apr 14 | Autoencoders |
Wed | Apr 16 | Flex |
Fri | Apr 18 | Generative Adversarial Networks |
Mon | Apr 21 | Transformers |
Wed | Apr 23 | Large Language Models and Retrieval Augmented Generation |
Fri | Apr 25 | Reinforcement Learning |
Mon | Apr 28 | Genetic Algorithms |
Wed | Apr 30 | Review |
Mon | May 5 | Final presentations, 1-4 PM |