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.

Courses

ECE 30861 — Software Engineering

My undergraduate software-engineering course teaches students how to exercise informed control over consequential software systems. Students study software process, teamwork, requirements, specification, architecture, design, validation, deployment, security, maintenance, and engineering decision-making while building and evaluating a substantial system in teams.

The course addresses a central problem for contemporary software engineering: implementation can be delegated to capable agents, but responsibility for the resulting system cannot. Students therefore learn not only how software is realized, but how engineers specify what should be built, preserve important knowledge outside the implementation, establish evidence about consequential properties, supervise delegated work, and decide when a system is ready to be admitted into use.

The course materials are openly available through Teach with MAGE.

ECE 50874 — Advanced Software Engineering

ECE 50874 is the graduate sequel to ECE 30861. Where the undergraduate course develops the core activities of software engineering, the graduate course uses engineering standards, notably IEC 61508, to structure the problem of software assurance. Students examine more advanced techniques and research for establishing evidence about software systems, reasoning about risk, and determining what confidence different forms of evidence actually justify.

Textbooks

In early 2026, coding agents became sufficiently capable as to substantially change software engineering work. To learn the new nature of the discipline, I spent six months saturating four Claude Max 20× accounts while building a large production software system. Implementation had become dramatically cheaper, but the engineer’s responsibility for the resulting system had not. The central problem was increasingly one of control and supervision: how can engineers understand and direct work produced at machine speed, establish that consequential properties hold, recognize when assumptions fail, and intervene when necessary?

I responded by writing and openly publishing two complementary textbooks.

Software Engineering Handbook

The Software Engineering Handbook develops the foundations needed to exercise informed control over software systems: engineering process, teamwork, requirements, specification, architecture, design, validation, and engineering decision-making. It asks what engineers need to know and do when producing the implementation is no longer necessarily the difficult part.

Model-Based Agentic Software Engineering (MAGE)

Model-Based Agentic Software Engineering (MAGE) begins where the Handbook leaves off. The Handbook develops the enduring activities through which engineers understand and control software systems; MAGE asks how those activities must be organized when capable agents can perform much of the realization. It develops Modeling, Alignment, and related structures for supervising delegated work while engineers retain informed control and responsibility.

Both books are instantiated in the openly published Teach with MAGE course materials.

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.

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.

175+undergraduate researchers mentored
27undergraduate research authors
12senior-design projects

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.

Meet the lab →

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.