Teaching statement

Teaching

My teaching philosophy centres on one conviction: the most durable understanding comes from seeing the same idea at two levels simultaneously — the abstract structure and the concrete consequence. In a field as applied as Computer Science, a student who can only state a theorem is less equipped than one who can also say "here is where this breaks down in production, and here is what you do about it."

My own background makes this dual-level teaching natural. Before returning to academia, I spent nearly a decade as a Senior Developer and Solutions Architect at Deloitte and Accenture — designing APIs that served tens of millions of weekly requests, managing PII-sensitive financial systems, and leading Agile delivery teams across global accounts. That experience means I can tell a student not just how a software design pattern works, but why a large engineering organisation adopted it, and what failure mode it was invented to prevent. When I teach evolutionary algorithms, I can connect the convergence theory to the aerodynamic optimisation problem I actually implemented. When I TA machine learning, I can describe the gap between a model that scores well on a benchmark and one a stakeholder will trust in deployment.

In practice this means my classroom is deliberately interactive. I design sessions around problems first — a concrete challenge is presented before the technique that solves it, so students develop intuition for why a method exists before learning its mechanics. Office hours are treated as collaborative debugging sessions, not just answer-delivery windows. Assignments are calibrated to be difficult enough that students feel genuine satisfaction when they succeed, and real-world enough that they can describe what they built in a job interview.

My goal is to produce graduates who are not only technically capable, but who understand that every system they build will be used, maintained, and eventually replaced by people — and who design accordingly.

Lecturing CPS196 — Fall 2023

/public/teaching-classroom.jpg

Whiteboard session with students

/public/teaching-whiteboard.jpg

Lab / office hours session

/public/teaching-lab.jpg

Courses taught

CPS 196★ Primary InstructorFall 2023

Introduction to Programming with Python

Independently designed and delivered the complete course: syllabus, lectures, labs, and exams. Managed a teaching assistant.

CIS 600Teaching AssistantSpring 2024

Introduction to Machine Learning

Instructor: Dr. Natarajan Gautam

CIS 453Teaching AssistantFall '20, '21, '22, '24, '25, Spring '26

Software Specification & Design

Instructors: Dr. C. K. Mohan · Dr. Edmund Yu · Prof. Joseph Waclawski

CIS 454Teaching AssistantSpring '20, '21, '22, '23, '25

Software Implementation

Instructors: Dr. C. K. Mohan · Dr. Edmund Yu · Prof. Joseph Waclawski


Student testimonials

"Sanup was the best — he did great at teaching us alongside the professor and helped explain certain concepts with real-world examples. He helped us understand the scope of our project and what we wanted to do."

CIS 453 / 454 — Software Design & Implementation

Spring 2025

"Very knowledgeable TA. Gave great information about software development in industry and was a good counterpart to the professor. The TA also came off as very in-tune with the current happenings in the software development world."

CIS 453 / 454 — Software Design & Implementation

Spring 2025


Mentorship

15+ students mentored

Informal mentor to graduate and undergraduate students (2020–2024), providing guidance on research direction, coursework, and career planning in both academia and industry.

Hack Upstate 2019 — Team Mentor

Conceptualised and mentored a student team to build "Design Evolution of Objects for Their Aerodynamics Using Genetic Algorithms" — the project that seeded the aerodynamic optimisation work in the dissertation.