Courses I teach:

CS 4730: Computer Game Design

This course covers game design and development. Students implement a simple 2D game engine, and then use this engine to design and develop a fully-playable game, culminating in an end-of-the-year expo. (Course Website)

CS 3120: Discrete Math and Theory II (Theory of Computation)

The goal of this course is to understand the fundamental limits on what can be efficiently computed. These limits reveal properties about information, communication, and computing, as well as practical issues about how to solve problems. Introduces computation theory including grammars, automata, and Turing machines. (Course Website)

CS 2150: Program Data and Representation

This course covers the basics of representation across multiple layers of abstraction within computing environments. Additionally, students learn about various data structures, their strengths and weaknesses, and how to implement each. (Course Website)

CS 2501: Data Structures and Algorithms I (DSA1)

This course is a redesign of the departmental CS2 course. It covers Java basics as well as all most of the important data structures (each built in Java). (Course Website)

CS 2501: Data Structures and Algorithms II (DSA2)

This course is the follow-up to DSA1. It wraps up the necessary data structures not presented in the previous course and covers many algorithmic techniques such as divide-and-conquer algorithms and dynamic programming. (Course Website)

CS 4710: Artificial Intelligence

This course covers artificial intelligence techniques including expert systems, pathfinding, markov models, reinforcement learning, and machine learning.

CS 4102: Algorithms

This course covers the basics of algorithm design and analysis. My version of the course stresses both theoretical rigor (written proofs and the like) as well as implementation (through programming assignments).

CS 3205: HCI in Software Development

This course summarizes the important concepts in Human-Computer Interaction with a focus on a software engineering approach to designing usable systems. I will put more information regarding the course here later.

CS 2190: Computer Science Seminar

The purpose of this seminar is to introduce students to the breadth of computer science research. Weekly talks from various faculty members introduce both the classic core areas of CS as well as the emerging edge fields.

CS 2501: Introduction to Game Design

Our take on CS1, involving the instruction of Python through game design. Students learn basic Python coding and implement simple games. The projects are presented at the end-of-year expo along with the CS4730 games.

CS 1501: Cracking the Coding Interview

A student-taught course that emphasizes coding skills and common interview techniques and strategies. Weekly work sessions involve practice interview problems and discussion.

Other Teaching Experience:

I have had the pleasure of teaching at multiple schools including the University of Massachusetts, Amherst and Mt. Holyoke College. For details regarding my teaching experience, check out my CV.