Teaching

COMS W4156 - Advanced Software Engineering

Graduate Course, Columbia University, Computer Science Department, 2022

A course in software lifecycle using frameworks, libraries and services. Major emphasis on software testing. Centers on a team project.

COMS W3107 - Clean Object-Oriented Design

Undergraduate course, Columbia University, Computer Science Department, 2021

A course in designing, documenting, coding, and testing robust computer software, according to object-oriented design patterns and clean coding practices. Taught in Java.Object-oriented design principles include: use cases; CRC; UML; javadoc; patterns (adapter, builder, command, composite, decorator, facade, factory, iterator, lazy evaluation, observer, singleton, strategy, template, visitor); design by contract; loop invariants; interfaces and inheritance hierarchies; anonymous classes and null objects; graphical widgets; events and listeners; Java’s Object class; generic types; reflection; timers, threads, and locks.