Teaching
I teach software engineering as an engineering discipline. My students learn not only what to do and how to do it, but why, when, and how else. The goal is not beautiful code for its own sake, but the disciplined construction and modification of software under real technical, organizational, and professional constraints.
My courses therefore center on substantial engineering problems rather than isolated exercises. Students make decisions under incomplete information, work individually and in teams, build and evaluate real systems, and learn to justify their choices. I extend the same philosophy beyond individual courses through curriculum development and sustained undergraduate research mentoring.
Curricular leadership
I have helped build Purdue ECE’s software-engineering curriculum across undergraduate and graduate education.
When I joined Purdue in 2020 as ECE’s first faculty member specializing in software engineering, the Computer Engineering curriculum did not have a dedicated software-engineering course. Since then, I have designed and piloted new undergraduate and graduate software-engineering courses, substantially redesigned the accompanying software-engineering tools course, and helped integrate these offerings into a new undergraduate Software Engineering concentration. I also helped design and launch Purdue’s M.S. in Software Engineering jointly with Computer Science.
These courses now serve more than 250 students each year. Demand for the undergraduate course led ECE to add a second section in Indianapolis, and four other ECE faculty have taught courses using the resulting curriculum and materials.
My curricular work also extends to program-level assessment and improvement. I served on ECE’s Undergraduate Curriculum Committee and subsequently helped lead the successful 2025 ABET review for Computer Engineering, with responsibility for documenting and evaluating the program’s continuous-improvement process.
Courses I teach
ECE 30861 — Software Engineering
My undergraduate software-engineering course uses a substantial team project to connect software process, requirements and specification, architecture, implementation, validation and assurance, deployment, security, maintenance, and professional judgment.
ECE 50874 — Advanced Software Engineering
My graduate software-engineering course moves from building software that works toward reasoning systematically about whether software is robust. Students study methods for identifying and managing engineering risk, evaluating evidence about software systems, and establishing confidence in important system properties.
The course draws on software-engineering research, industrial practice, and international engineering standards, notably IEC 61508, asking students to reason critically about both the methods engineers use and the evidence those methods produce.
Undergraduate research as teaching
Research is one of my primary teaching environments.
Since joining Purdue, I have mentored more than 175 undergraduate researchers through Vertically Integrated Projects (VIP), SURF, NSF REU, OUR Scholars, the Colombia–Purdue Partnership, independent study, and related programs. I have also supervised 12 senior-design projects through these research activities.
I treat undergraduate research as a progression toward independence. Students can enter a continuing project with limited research experience and a well-scaffolded technical role, then take on increasingly substantial responsibilities as they develop. I pair undergraduate researchers with graduate students for near-peer mentoring, while experienced undergraduates themselves become technical leaders and mentors for newer students.
The goal is to train both researchers and engineers. Students learn to formulate questions, design experiments, analyze evidence, build production-quality software, communicate results, and decide what to do when the answer is not already known.
Twenty-seven undergraduate mentees have become authors — including several lead authors — on peer-reviewed papers, posters, and a U.S. patent application. Engineering-focused students have also contributed artifacts used outside the university, including seven models accepted to Google’s TensorFlow Model Garden.
Vertically Integrated Projects
I have run undergraduate VIP research teams continuously since Fall 2020. These teams provide a persistent environment in which students at different stages can work together on research and engineering problems over multiple semesters.
Recent and past teams include:
Software Engineering with Pre-Trained Models
Research and engineering around the reuse, integration, reliability, and security of pre-trained models.
Open-Source TensorFlow Software
Students contributed models and engineering work to the TensorFlow ecosystem, including artifacts accepted into Google’s TensorFlow Model Garden.
SafeRegex
Research and engineering on the reliability and security of regular expressions.
Student outcomes
My undergraduate mentees have received recognition at the departmental, national, and international levels.
- Spring 2026 · Presentation with High Distinction
Purdue Undergraduate Research Conference — SysLLMatic / Hydra, Software Engineering with Pre-Trained Models VIP team. The first PTM team to receive the distinction. - 3× Outstanding Undergraduate Researcher
Elmore Family School of Electrical and Computer Engineering · 2021, 2022, 2024 - Astronaut Scholarship
- CRA Outstanding Undergraduate Researcher
Honorable Mention - NSF Graduate Research Fellowship
- Department of Defense NDSEG Fellowship
- CRA CSGrad4US Fellowship
- 3× Google Open-Source Contributor Award
Mentees have gone on to graduate study at institutions including Stanford, Carnegie Mellon, UIUC, Michigan, Georgia Tech, and Penn, as well as engineering careers at organizations including Google, Microsoft, Meta, Apple, NVIDIA, AWS, SpaceX, Tesla, Garmin, and Eli Lilly.
Teaching and mentoring recognition
- 2026 · Purdue University Exceptional Early Career Teaching Award
- 2026 · Purdue College of Engineering Faculty Excellence Award in Exceptional Early Career Teaching
- 2026 · VIP Outstanding Team Mentor Award
Software Engineering with Pre-Trained Models team - 2024 · Outstanding Engineering Teachers (College of Engineering)
course evaluation scores; F21, S22, F22, S24 - 2024 · Outstanding Faculty Mentor, Elmore School of Electrical & Computer Engineering
- 2022 · Ruth and Joel Spira Outstanding Teacher Award
- 2021 · VIP Outstanding Team Mentor Award
Purdue TensorFlow team
Scholarship of teaching and learning
My scholarship of teaching and learning includes six peer-reviewed papers. I study the teaching of software engineering itself. My education research examines how students develop software-engineering competencies through experiential and problem-based learning, how systems thinking can improve cybersecurity education, and how generative AI changes software-engineering education.
This work feeds back into my courses. Studies of experiential learning informed the problem-based structure of ECE 30861; subsequent work examined global software-engineering education and cybersecurity competency within the course. More recently, my collaborators and I have studied how students use large language models in semester-long software-engineering projects and how curricula should prepare students for GenAI-assisted engineering.
Our 2024 ASEE work on integrating systems thinking into cybersecurity education received a Best Paper Award. This work has been supported by approximately $730,000 in education-focused projects, including NSF #2452533, on defining competencies for GenAI-assisted software engineering.
