Teaching

I am passionate about the computer sciences and strive to foster an inclusive learning environment where I can share my excitement for challenging ideas and problems, while being respectful of, and responsive to, student needs.


Portfolio. Philosophy, evals, materials.


Teaching Philosophy

 

Nearest Neighbor Classification (with almost no background)

Humans get better with experience and, using Machine Learning, computers can too - and with this assignment, students with little-or-no programming experience can gain conceptual and hands-on exposure to Nearest Neighbor classification. The included variants are (1) a no-experience version, for students participating in a one-time workshop; and (2) an early-semester CS1 version, for students who have had some introduction to programming with Python. The supplied materials include a homework assignment (in Python, with practice problems, rubrics, starter files, auto-grading unit tests, and an explanatory handout) as well as a presentation with type-along code for CS/AI outreach events. This project is optimized for minimizing prerequisite knowledge, and so leaves a universe of expansion possibilities, including language choice, dataset size/domain, and inclusion of advanced concepts (e.g., non-linear search algorithms, kernel representations).

  • Assignment Materials
    Published at EAAI 2019

Solve a Maze via Search

An important aspect of an introductory AI course is exposure to the complexities and tradeoffs involved in deploying an application that integrates one or more intelligence techniques. This project assumes students have studied (un)informed search algorithms (e.g. via Pacman Projects), and guides them through the process of developing an image-based maze solver. The assignment begins by assuming a clean grid-based representation, and has students formulate maze-solving as a search problem. They are then tasked with applying basic computer-vision and image-processing techniques (via OpenCV) to convert an input image into the assumed problem representation, and then project the solved path onto the picture for the user to see. Throughout the project, students are pushed to visualize their work, verify incremental steps, and analyze tradeoffs between algorithmic performance and solution feasibility/quality. The assignment concludes with a variety of extensions, allowing students to pursue more challenging aspects that suit their interests.

  • Assignment Materials
    Published at EAAI 2018

An Introduction to Classification: A CS2 Object-Oriented Programming Project

Through a series of scaffolded steps, this CS2 project asks students to develop a flexible framework for evaluating classification algorithms. In each phase of the project, students are provided documentation, unit tests, and supporting compiled code. The focus is on object-oriented concepts, such that the application can "mix and match" any classification algorithm with any training/testing-pair evaluation dataset. The purpose of the project is for the students to apply principles of object-oriented programming to a relatively large-scale, real-world problem. Along the way students learn about basic machine learning concepts; issues and tradeoffs related to knowledge representation (e.g. the efficiency of sparse vs. dense feature vectors); and implement two basic supervised learning algorithms (1-NN, ZeroR), as well as a simple form of reservoir sampling.

  • Assignment Materials
    Published at EAAI 2016

Northeastern University, Boston, MA, USA

  •               
    Fall 2023: Fundamentals of Computer Science 1
    Coordinator (>450 students, >30 instructional staff) + Instructor, CS2500 (Synchronous on-ground, global)
  •            
    Fall 2022: Fundamentals of Computer Science 1
    Coordinator (>750 students, >90 instructional staff) + Instructor, CS2500 (Synchronous on-ground & live stream)
  •                  
    Fall 2021: Fundamentals of Computer Science 1
    Coordinator (>1000 students, 100 instructional staff) + Instructor, CS2500 (Synchronous on-ground & Asynchronous online)
  •      
    Spring 2021: Fundamentals of Computer Science 2
    Instructor, CS2510 (Synchronous Hybrid-flexible)
  •         
    Fall 2020: Fundamentals of Computer Science 1
    Instructor + Developer, CS2500 (Asynchronous online)
  •      
    Fall 2020: Database Design
    Instructor, CS3200 (Synchronous hybrid-flexible)
  •      
    Spring 2020: Programming with Data
    Instructor, DS2000 (Synchronous hybrid)
  •            
    Fall 2019: Fundamentals of Computer Science 1
    Coordinator (>600 students, 60 instructional staff) + Instructor, CS2500
  •         
    Spring 2019: Programming with Data
    Instructor, DS2000 (Synchronous hybrid)
  •            
    Fall 2018: Fundamentals of Computer Science 1
    Instructor, CS2500
  •      
    Fall 2018: Programming with Data
    Instructor + Developer, DS2000
  •   
    Fall 2018: Data Science Programming Practicum
    Instructor + Developer, DS2001
  •      
    Spring 2018: Fundamentals of Computer Science 1
    Instructor, CS2500
  •      
    Spring 2018: Database Design
    Instructor, CS3200
  •      
    Spring 2018: Software Development
    Instructor, CS4500
  •      
    Fall 2017: Database Management Systems
    Instructor, CS5200
  •      
    Fall 2017: Data Mining Techniques
    Instructor, CS6220
  •      
    Fall 2017: Unsupervised Machine Learning and Data Mining
    Instructor, DS5230

Wentworth Institute of Technology, Boston, MA, USA

  •      
    Summer 2017: Introduction to Artificial Intelligence
    Instructor, COMP3770
  •      
    Spring 2017: Introduction to Artificial Intelligence
    Instructor, COMP3770
  •   
    Spring 2017: Computer Science II
    Instructor, COMP1050
  •         
    Fall 2016: Computer Science I
    Instructor, COMP1000
  •      
    Spring 2016: Introduction to Artificial Intelligence
    Instructor, COMP3770
  •   
    Spring 2016: Databases
    Instructor, COMP2650
  •   
    Fall 2015: Machine Learning
    Instructor, COMP4050
  •         
    Fall 2015: Computer Science I
    Instructor, COMP1000
  •   
    Spring 2015: Databases Management Systems
    Instructor, COMP355
  •      
    Spring 2015: Computer Science II
    Instructor, COMP201
  •   
    Fall 2014: Databases Applications
    Instructor, COMP570
  •      
    Fall 2014: Computer Science I
    Instructor, COMP128

University of Michigan, Ann Arbor, MI, USA

  •            
    Winter 2008: Programming and Introductory Data Structures
    Graduate Student Instructor, EECS280

Guest Lectures/Talks for Students

  •   
    Computing Decisions
    Break Into Tech (BiT) @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  •   
    Silver Linings Gradebook
    Summer Teaching Workshop (iCSTWS) @ Computer Science Department, University of Illinois Urbana-Champaign, Urbana-Champaign, IL, USA
  •   
    Adventures in Hybrid Architectures for Intelligent Systems
    Colloquium @ Department of Computer Science, Williams College, Williamstown, MA, USA
  • Mindset for Success
    MS Align @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  •   
    Optimize!
    MS Align @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  •   
    Live-Coding via Webcam: Collaboratively & Remotely Teaching DS2000 @ NCH, London, UK
    Technology in Teaching Expo @ Northeastern University, Boston, MA, USA
  • Solving World Problems: Learning One Example at a Time
    Honors Welcome Day @ Northeastern University, Boston, MA, USA
  • What is Machine Learning?
    Machines and Data Masterclass @ New College of the Humanities, London, UK
  • What is Machine Learning?
    MS Align @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  • Solving World Problems: Learning One Example at a Time
    Northeastern JumpStart @ Shenzhen, Shanghai, Mumbai, Bangalore, Dubai
  • What is Machine Learning?
    MS Align @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  •      
    Cognitive Architecture: An Approach to AGI
    6.S099: Artificial General Intelligence @ Massachusetts Institute of Technology, Cambridge, MA, USA
  • Web: Passwords, Security, APIs
    CS 4550 (Web Development) @ Khoury College of Computer Sciences, Northeastern University, Boston, MA, USA
  • Artificial Intelligence
    Faculty Spotlight @ Wentworth Institute of Technology, Boston, MA, USA
  • Optimize!
    Mechanical Engineering Seminar Series @ Wentworth Institute of Technology, Boston, MA, USA
  • The Boundary Forest Algorithm for Fast Online Learning of Large Datasets
    WIT Talks @ Wentworth Institute of Technology, Boston, MA, USA
  • Machine Learning
    COMP 543 (Artificial Intelligence) @ Wentworth Institute of Technology, Boston, MA, USA
  • The Boundary Forest Algorithm for Fast Online Learning of High-Dimensional Data
    MATH 650 (Machine Learning) @ Wentworth Institute of Technology, Boston, MA, USA
  • Basics of Web Development
    EECS 497 (Capstone Project Course) @ University of Michigan, Ann Arbor, MI, USA
  •      
    The Soar Cognitive Architecture: Towards Human-Level Intelligence
    Undergraduate AI Lab (MSaiL) @ University of Michigan, Ann Arbor, MI, USA

Student Projects. Fun and learning.

Undergraduate Research @ Wentworth Institute of Technology, Boston

At Wentworth I worked with numerous students on research that led to published articles.

  •      
    Tologon Eshimkanov
    Automatic Score Keeper (ASK) for Cornhole via Computer Vision (AAAS-17)
  •      
    Tyler Frasca
    A Comparison of Supervised Learning Algorithms for Telerobotic Control using Electromyography Signals (AAAI-16)

Service Learning @ Wentworth Institute of Technology, Boston

At Wentworth I worked with numerous students on projects that balance traditional classroom experience with the rich lessons that come through external collaboration and community service.

  • Artur Janowiec
    GPA Calculator - allows students to quickly compute overall GPA based upon current classes and prior GPA
  •   
    Tyler Gauch, Nasser Eledroos, Matthew Stoker
    ChemDB - allows a set of academic institutions to easily, effectively, and safely log and monitor chemical usage

CS1 @ Wentworth Institute of Technology, Boston

COMP128/1000 is an introductory programming class in C++/Java. Several students have produced independent projects in such areas as [mobile] games, computer vision, embedded systems, and artificial intelligence.

  •   
    James Desmond
    SmartDorm - provides a menu-driven system for RPi control
  •   
    Jack Manning
    Air Rifle Target Score - uses OpenCV and novel algorithms to score pictures of targets
  •   
    Jared Conroy
    Afroman - a sidescroller, music rhythm game, and maze all in one exciting race against the clock (Windows)

LEAD Engineering @ University of Michigan, Ann Arbor

LEAD is a three-week residential summer program that brings under-represented K-12 students from around the US to take advanced engineering courses, develop leadership skills, and engage challenging projects from a variety of industry partners in 13 different departments.

I served as the head instructor in 2010, and lead an undergraduate student team to develop a curriculum for the computer science group: the students investigated the relationship between computer hardware, software, and energy consumption. In 2011 I was an assistant instructor and helped middle-school students develop Android apps.

  • Instructional Video
    Making a Homopolar Motor
  • LEAD Android Market
    Student App Inventor projects

SITE @ North Carolina State University, Raleigh

SITE was a residential summer program that brought high-school students to engage challenging engineering projects.

I served as a program instructor for the computer science camp in 2002: we developed and executed a curriculum whereby student groups learned film production software and produced their own movie, from capturing film, to audio mastering, to special effects.

  • Student Group Final Project
    Jedi Duel