Teaching

Approach

Pretty much everyone in my life has always valued learning over grades & seen failure as a learning opportunity. I’ve never been afraid to ask for clarification or help or to make a leap to try something new. I’ve failed more than once, but I had the support structure to make the impact low.

Very little of this is true for my students – especially 1st-year undergraduates, 1st-generation college students, minorities, and those with various disabilities. It’s something that I was aware of, but the pandemic and current events have made the need to face it all the more urgent. This has resulted in three principles that shape how I teach any course:

  • Remember that everyone learns differently: I try to balance the types of resources and activities in each course to avoid overemphasis on any one form of communication or type of activity. In-class discussions are balanced with written reflections, lectures with live demos, high-stakes assignments with casual practice problems, individual work with pair programming & team projects, etc.
  • Be consistent and clear: Students can’t be successful if I don’t define what success is. Still, consistency doesn’t have to mean complete inflexibility. I leave room for everyone to find their own path to success. This means ensuring that no single assignment is weighted so highly that it’s “make or break,” and there’s always formative feedback to support improvement.
  • Foster community and understanding: Any student in my classes must feel welcome regardless of their nationality, race, gender, and individual strengths and weaknesses. I encourage my students to share their own experiences and perspectives. This dynamic means that class is casual and interactive. We can have fun, but everyone contributes towards a positive, inclusive atmosphere. This includes respecting names/pronouns and learning to give constructive, actionable peer feedback.

Courses

Game Development and Algorithmic Problem Solving

IGME-105

This course introduces students within the domain of game design and development to the fundamentals of computing through problem solving, abstraction, and algorithmic design. Students will learn the basic elements of game software development, including problem decomposition, the design and implementation of game applications, and the testing/debugging of their designs.

355 students over 8 semesters

Problem Solving with Data Structures and Algorithms for Games

IGME-106

This course furthers the exploration of problem solving, abstraction, and algorithmic design. Students apply the object-oriented paradigm of software development, with emphasis upon fundamental concepts of encapsulation, inheritance, and polymorphism. In addition, object structures and class relationships comprise a key portion of the analytical process including the exploration of problem structure and refactoring. Intermediate concepts in software design including GUIs, threads, events, networking, and advanced APIs are also explored. Students are also introduced to data structures, algorithms, exception handling and design patterns that are relevant to the construction of game systems.

410 students over 8 semesters

Interactive Media Development

IGME-202

In this course, students will learn to create visually rich interactive experiences. It is a course in programming graphics and media, but it is also a course on the relationship between ideas and code. Students will explore topics in math and physics by building programs that simulate and visualize processes in the natural world. Assignments will include major programming projects, such as building a virtual world inhabited by digital creatures that display observable behaviors.

115 students over 3 semesters

Real-Time Simulations and Games 1

IGME-209

This course focuses upon the application of data structures, algorithms, and fundamental Newtonian physics to the development of video game applications, entertainment software titles, and simulations. Topics covered include 3D coordinate systems and the implementation of affine transformations, geometric primitives, and efficient data structures and algorithms for real-time collision detection. Furthermore, Newtonian mechanics principles will be examined in the context of developing game and entertainment software where they will be applied to compute the position, velocity and acceleration of a point-mass subject to forces and the conservation of momentum and energy. Programming assignments are a required part of this course.

56 students over 1 semesters

Introduction to Software Engineering

SWEN-261

An introductory course in software engineering, emphasizing the organizational aspects of software development and software design and implementation by individuals and small teams within a process/product framework. Topics include the software lifecycle, software design, user interface issues, specification and implementation of components, assessing design quality, design reviews and code inspections, software testing, basic support tools, technical communications and system documentation, team-based development. A term-long, team-based project done in a studio format is used to reinforce concepts presented in class.

78 students over 2 semesters

Game Development Processes

IGME-601

This course examines the individual and group roles of the development process model within the game design and development industry. Students will transform design document specifications into software and hardware needs for developers, testers, and end users. Students will examine team dynamics and processes for technical development, content development, testing, deployment, and maintenance. Students will explore the design process through the deconstruction of the game industry's software lifecycle model.

178 students over 7 semesters

Programming for Designers

IGME-609

This course is an introduction to programming for students with a background in design. Students will write programs to construct and control interactive, media-rich experiences. Students will employ fundamental concepts of object-oriented computer programming such as classes, variables, control structures, functions, and parameters in their code. Students will develop their problem solving skills and begin building a logical toolkit of algorithms and program design strategies. Students will extend existing software objects provided by the instructor, as well as create new objects of their own design. Programming projects will be required.

25 students over 1 semesters

IGM Production Studio

IGME-680

This course will allow students to work as domain specialists on teams completing one or more large projects over the course of the semester. The projects will be relevant to experiences of the interactive games and media programs, but they will require expertise in a variety of sub-domains, including web design and development, social computing, computer game development, multi-user media, human-computer interaction and streaming media. Students will learn to apply concepts of project management and scheduling, production roles and responsibilities, and their domain skill sets to multidisciplinary projects. Students will complete design documents, progress reports and final assessments of themselves and their teammates in addition to completing their assigned responsibilities on the main projects.

67 students over 3 semesters

Capstone Design

IGME-788

This course allows students within the game design and development program to develop a capstone proposal and design document. The capstone design document specifies the scope and depth of the capstone project. In addition, it defines the group and individual responsibilities for the cohort capstone project experience.

30 students over 1 semesters

Capstone Development

IGME-789

This course provides master of science in game design and development students with capstone project experiences. Students are expected to work in cohorts towards the implementation of a game system that properly illustrates proficiency in the application of theory and practice towards a large-scale project. For each student, individual responsibilities for the group project will be defined in consultation with both the group and the faculty. Students must successfully complete the Capstone Design course and present a satisfactory capstone project proposal to the faculty before enrolling in this course.

30 students over 1 semesters

Vertically Integrated Projects (VIP) for Computing I, II, & Graduate

GCIS-210/410/610

The Vertically Integrated Projects (VIP) engage students in long-term, large-scale, multidisciplinary project teams that are led by faculty. VIP courses are project-based, team-based courses directly supporting faculty research and scholarship. VIPs under this course number have a particular focus on computation and applications of computing.

66 students over 3 semesters