Teaching

I have taught undergraduate-level classes at Virginia Tech in lecture-style and active-learning-style mode. These include programming classes in C/C++ (CS 1044), Java (CS 1054), and Software Design (CS 1114). For the past three years, I have been a teaching assistant in Introduction to Computational Thinking (CS 1014), which is aimed at non-computing majors and contextualized around examining the societal impact of data. I will be the instructor of record for this class in Spring 2021.

Introduction to Software Design

Undergraduate course, Virginia Tech, Computer Science Department, 2020

This course provided an introduction to concepts of programming from an object-oriented perspective. We covered basic software engineering principles and programming skills using Java. The topics included discussions on simple data types, control structures, array and string data structures, basic algorithms, and testing and debugging. These were structured around object-oriented programming paradigm (e.g. focusing on data with methods operating upon the object’s data, implementing interactions between objects, and emphasizing reusability through careful class design).

Introduction to Programming in Java

Undergraduate course, Virginia Tech, Computer Science Department, 2020

This course provided an introduction to fundamental concepts of programming from an object-oriented perspective. We covered basic software engineering principles and programming skills using Java. The topics included discussions on simple data types, control structures, array and string data structures, basic algorithms, and testing and debugging.

Introduction to Software Design

Undergraduate course, Virginia Tech, Computer Science Department, 2019

This course provided an introduction to concepts of programming from an object-oriented perspective. We covered basic software engineering principles and programming skills using Java. The topics included discussions on simple data types, control structures, array and string data structures, basic algorithms, and testing and debugging. These were structured around object-oriented programming paradigm (e.g. focusing on data with methods operating upon the object’s data, implementing interactions between objects, and emphasizing reusability through careful class design).

Introduction to Programming in Java

Undergraduate course, Virginia Tech, Computer Science Department, 2019

This course provided an introduction to fundamental concepts of programming. We covered basic software engineering principles and programming skills using Java. The topics included discussions on simple data types, control structures, array and string data structures, basic algorithms, and testing and debugging.

Introduction to Programming in C++

Undergraduate course, Virginia Tech, Computer Science Department, 2018

I designed this course to cover basic structured programming using the C++ language. It was not a course about C++. It was intended for those with little or no programming background. Although prior programming experiences may make it easier, it was intended as a gentle introduction to think like a computer scientist.