About Teaching Software Engineering

One of the challenges of teaching Software Engineering to both graduate and undergraduate students is that of creating realistic project environments that mimic some of the challenges students will face in industrial settings. Students need exposure to designing, building, and testing non-trivial software products. Creating such environments in the classroom can be challenging. Over the past three years we have taught a course that focuses on Software Engineering using Unmanned Aerial Vehicles (UAVs).
This provides the opportunity for students to work with Cyber-Physical Systems (CPS) in a domain for which safety is an issue. Our class dedicates the first half of the semester to skill-building and then takes a project-oriented approach to build a drone-based system emphasizing requirements, design, coding, testing, and safety-analysis. This year, students are working on topics that include formation flying, AI reinforcement learning, ad-hoc communication using drone relays, voice recognition, and drone security. Last year, two students developed technology that allows 911 operations to launch a drone carrying a defibrillator. This project was so successful that the students have started a startup company backed by Notre Dame's IDEA center.
However, teaching is not all about the classroom. These pages provide insights into STEM outreach activities hosted or organized by the SAREC lab. These include summer opportunities for undergraduate research, primarily funded by NSF's REU (Research Experience for Undergraduates), and other outreach endeavors.