CS 167: Machine Learning (Fall 2026)
Instructor: Alimoor Reza
Associate Professor of Computer Science
Department of Mathematics and Computer Science
Drake University

Meeting time (Section#1): Mon/Wed (02:00pm-03:15pm), Class room: Collier-Scripps # 301
Meeting time (Section#2): Mon/Wed (03:30pm-04:45pm), Class room: Collier-Scripps # 335
Office hours: Tue/Thur (12:00pm-2:30pm) or by appointment


Schedule
A tentative schedule below (subject to change as we progress).


Date Topic Reading Items due
week 1 (Mon: 08/24)

  Introduction to Machine Learning
  Lecture Slides 1
 
 
 
week 1 (Wed: 08/26)

  Google Colab and Python Review
  Day02 Notes: Google Colab + Python Refresher
  Day02 Notes: Pandas Introduction
  Lecture Slides 2
 
  Reading:
  In-class activity#0 (due on 08/29)
week 2 (Mon: 08/31)

  Pandas Tutorial
  Day03 Notes: Pandas Tutorial (continue)
  Day03 Notes: Pandas Practice
  Lecture Slides 3

  Reading:
 
week 2 (Wed: 09/02)

  Missing Data
  Day05 Notes: Handling Missing Data
  Lecture Slides 5


  Notebook#1 (released on 09/02)
 
  Reading:
  isna()
  notna()
  any()
  value_counts()   dropna()   fillna()
 
week 3 (Mon: 09/07)

  Labor Day (university holiday; classes do not meet)

   
week 3 (Wed: 09/09)

  k-Nearest Neighbor (kNN)
  Day06 Notes: k-Nearest Neighbor using Pandas Library
  Lecture Slides 6

 
 
  Reading:
  The relationship ML and other fields
  Notebook#1 (due on 09/09)
week 4 (Mon: 09/14)

  Introduction to Scikit-learn Library
  kNN code using Scikit-learn Library (more efficient)
  Day07 Notes: kNN code with scikit-learn
  Lecture Slides 7


  Notebook#2 (released on 09/14)

  Reading:
  sklearn
  sklearn::KNeighborsClassifier
  sklearn::KNeighborsRegressor
 
week 4 (Wed: 09/16)

  Data Normalization
  Day08 Notes: Data Normalization
  Lecture Slides 8
 


  Reading:
  sklearn: standard scalar
 

 
  In-class activity#1 kNN using scikit-learn (due on 09/28)

Week 5 (Mon: 09/21)

  Weighted k-NN
  Graph Plot
  Cross-validation Discussion
  Day09 Notes: Weighted k-NN code using sklearn
  Day09 Notes: Graph Plot (take home activity due by 09/25)
  Lecture Slides 9
 
  Reading:
  matplotlib: Pyplot
 

  Notebook#2 (due on 09/21)
 
week 5 (Wed: 09/23)

  Evaluation Metrics (Accuracy, Confusion Matrix, MAE, MSE, R2)
  Evaluation Metrics on kNN Regression Coding Activity
  Day10 Notes: Evaluation Metrics and Testing
  Lecture Slides 10


  Notebook#3 (released on 09/23)

  Reading:
  sklearn.metrics: accuracy_score
  sklearn.metrics: confusion_matrix
  sklearn.metrics: mean_absolute_error
  sklearn.metrics: mean_squared_error
 

  In-class activity#2 Graph Plot (due on 09/25)

week 6 (Mon: 09/28)

  Introduction to Decision Trees
  Decision trees and Entropy Calculation
  Paper-based in-class Activity on Decision Trees
  Day10 Notes: Entropy Calculation for Decision Trees
  Lecture Slides 11
 
  Reading:
 
week 6 (Wed: 09/30)

  Decision Tree code using Scikit-learn Library
  Day12 Notes: Decision tree code using Scikit-learn
  Day12 Notes: More practice exercises using Scikit-learn
  Lecture Slides 12


  Notebook#4 (released on 09/30)


  Reading:
  sklearn: Decision Tree classifier
  sklearn: train and test split
  sklearn: evaluation metrics
  sklearn: confusion matrix
 
  Notebook#3 (due on 09/30)
  In-class activity#3 Entropy Calculation for DT (due on 10/05)

week 7 (Mon: 10/05)

  Random Forest
  Day13 Notes: Random Forest
  Lecture Slides 13



 
  Reading:
  sklearn: Random Forest Classifier
  sklearn: Random Forest Regressor
  Random Forests: Leo Breiman and Adele Cutler
  Application of Random Forest: A Computer Vision paper
 
week 7 (Wed: 10/07)

  Project#1 (released on Blackboard 03/23)
  Day14 Notes: Project#1

  Midterm Exam (in-class exam released on Blackboard)

 
 
  Notebook#4 (due on 10/07)
week 8 (Mon: 10/12)

  Fall Break (classes do not meet)

 
 
week 8 (Wed: 10/14)

  Linear Classifiers
  Perceptron
  Lecture Slides 15


  Reading:
 
 
week 9 (Mon: 10/19)

  Perceptron (continued)
  Perceptron Learning Algorithm
  Lecture Slides 16
  In-class activity (linear model, perceptron)#4
  Day16 Notes: Perceptron Code (optional)

  Reading:
  The Perceptron: A Perceiving and Recognizing Automaton (Rosenblatt - 1957)
 

  In-class activity#4 Linear Models (due on 10/19)

week 9 (Wed: 10/21)

  Introduction to Neural Networks
  Neuron Model and General Weight Learning Algorithm
  Multilayer Perceptron (MLP)
  Lecture Slides 18


  Reading:
  Multilayer Perceptron (MLP)
  The Backpropgation Algorithm (Rumelhart-1985)
    Project#1 (due by 10/21)
week 10 (Mon: 10/26)

  PyTorch Basics
  Lecture Slides 19
  Day20 Notes: PyTorch Basics in-class activity


  Reading:
  PyTorch
  PyTorch: matmul()
  PyTorch: transpose()
  PyTorch: nn.Linear()
  PyTorch: nn.Sigmoid()
  PyTorch: nn.ReLU()
 
 
week 10 (Wed: 10/28)

  MLP Code using PyTorch
  Lecture Slides 20
  Day 21 Notes: PyTorch's Useful Functions for MLP


  Reading:
  PyTorch: nn.Flatten()


  In-class activity#5 PyTorch Basics (due on 10/24)

Week 11 (Mon: 11/02)

  MLP: Multilayer Perceptron (Modular PyTorch Implementation)
  Training an MLP using PyTorch (Discussion/lecture)
  Lecture Slides 21
  Day 22 Notes: Building Modular MLP with PyTorch

  Reading:
  PyTorch: nn.Softmax()
  PyTorch: nn.CrossEntropyLoss()
  PyTorch: nn.MSELoss()
  PyTorch: optim.SGD()
  PyTorch: optim.ADAM()
  PyTorch: optim.RMSprop()
  PyTorch: torchvision.datasets
 

 
Week 11 (Wed: 11/04)


  Training an MLP using PyTorch (implementation/coding)
  Lecture Slides 22
  Day 23 Notes: Training MLP using PyTorch


  Notebook #5 (Released on 11/04)

 
 
Week 12 (Mon: 11/09)

  Convolutional Neural Network (CNN)
  Lecture Slides 23 [pdf] [powerpoint]




  Reading:
 
  Popular CNN: AlexNet (Krizevsky-2012)
  Popular CNN: VGGNet (Simonyan-2015)
  Popular CNN: ResNet (He-2015)
 

  In-class activity#6 Convolution and Tensor Size (due on 11/09)

Week 12 (Wed: 11/11)

  Convolutional Neural Network (CNN) (implementation/coding)
  Lecture Slides 24
  Day 25 Notes: Building Simple CNN using PyTorch
  Day 25 Notes: Training Simple CNN using PyTorch


  Reading:
  Earliest CNN: LeNet (LeCunn-1988)
  PyTorch: nn.Conv2d()
  PyTorch: nn.Flatten()
  PyTorch: nn.MaxPool2d()
  PyTorch: nn.AvgPool2d()

 
Week 13 (Mon: 11/16)

  Fine-tuning vs. Training
  Fine-tuning CNNs
  Lecture Slides 25
  Day 26 Notes: Fine-tuning CNN using PyTorch


  Project#2 (released on Blackboard 11/16)

  Reading:
 
  Notebook #5 (due on 11/16)
Week 13 (Wed: 11/18)

  Recurrent Neural Network (RNN)
  Lecture Slides 26a
  Transformer
  Lecture Slides 26b


  Reading:
 
  RNN: Serial Order (Jordan-1986)   Finding Structure in Time (Elman-1990)
  LSTM: Long Short-Term Memory (Hochreiter-1997)
  GRU: Gated Recurrent Unit (Hochreiter-2014)
  The Unreasonable Effectiveness of Recurrent Neural Networks (RNNs)
 
  Transformer: Attention is All You Need (2017)
  The Illustrated Transformer
  Harvard University NLP: The Annotated
  LSTM is dead. Long Live Transformers! - Paul Dirac talk
  Transformer by Hand - Anna Rahn 5 min video tutorial



 
  extended deadline
Week 14 (Mon: 11/23)

  Large Language Model (LLM)
  LLM Application for NLP Tasks using PyTorch
  Lecture Slides 27
  Day 27 Notes: LLM for sentiment classification
  Day 27 Notes: LLM for paraphrase detection
  Day 27 Notes: LLM for question answering
 
 


  Reading:
  GPT-1 (100M parameters) - Radford et al. 2018 (OpenAI)
  BERT (300M parameters) - Devlin et al. 2018
  GPT-2 (1.5B parameters) - Radford et al. 2019 (OpenAI)
  Megatron-LM (8.0B parameters) - Shoeybi et al. 2019 (NVidia)
  T5 (11.0B parameters) - Raffel et al. 2020 (Google)
  T-NLG (17.0B parameters) - Microsoft Corporation 2020 (Microsoft)
  GPT-3 (175.0B parameters) - Brown et al. 2020 (OpenAI)
  ChatGPT (1.5B parameters) - OpenAI 2022 (OpenAI)
  Sparks of Artificial General Intelligence: Early experiments with GPT-4 - MSFR'23
  Dissociating language and thought in large language models-2024
  OpenAI-o1 - 2024 (OpenAI)
  Is OpenAI-o1 reasoning? (ML Street Talk'24)
  DeepSeek 2025 (China)
  Qwen 2.5-Max 2025 (Ali Baba@China)
  World Model (Jurgen Schmidhuber@NeurIPS'18)
  LoRA: Low-Rank Adaptation of Large Language Models (ICLR'22)




week 14 (Wed: 11/25)

  Thanksgiving Break (classes do not meet)

 
 
Week 15 (Mon: 11/30)

  DayXX Notes: Dimensionality Reduction Techniques
  Principle Component Analysis (PCA)
  Lecture Slides XX



  Reading:
  sklearn: Principle Component Analysis (PCA)
  sklearn: Feature Selection: SelectKBest
 
  Project#2 (due by 11/30)
Week 15 (Wed: 12/02)

  Optimization: Gradient Descent (GD), Stochastic Gradient Descent (SGD)
  DayXX Notes: Loss Surface Visualization
  DayXX Notes: Stochastic Gradient Descent (code)
  Lecture Slides XX


  Course Evaluation



  Reading:
  An overview of gradient descent optimization algorithms - Sebastian Ruder
 
 
Week 16 (Monday: 12/07)

  Final exam (consolidated for both sections)
  Monday, December 7th at 4:00 pm – 5:50 pm
  SCB 0101
 
 
  Reading:
 
  In-class activity#7 LLMs (due on 12/07)
  Final Exam (due by 12/07 Monday)