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).
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.
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.
At Wentworth I worked with numerous students on research that led to published articles.
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.
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.
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.
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.