ECE 30861 — Purdue, Fall 2026¶
ECE 30861 — Software Engineering is the course in which these materials are being taught at Purdue University in Fall 2026. The course combines the lectures, semester project, and assessments into a 16-week course for Computer Engineering students.
The Syllabus gives the course outcomes, policies, grading, and full outline. The Calendar shows how the lectures, project, and assessments are scheduled across the semester.
Teaching goal¶
The course is organized around engineering judgment: students should learn not only the practices of software engineering, but how to reason about which practices are appropriate for a particular system and why.
Accordingly, the lectures emphasize the engineering problems that practices solve, the conditions under which they work, and the tradeoffs among alternatives. Process models, teamwork structures, requirements, architecture, testing, assurance, and other topics are taught as choices made in response to properties of the system and its environment, rather than primarily as a catalog of established techniques.
GenAI makes this emphasis especially important. As implementation becomes cheaper, the ability to identify obligations, choose representations and controls, evaluate evidence, and exercise engineering judgment becomes a larger part of the engineer's contribution. MAGE provides one framework for reasoning about that shift, but the course's emphasis on judgment does not depend on accepting the MAGE framework. The materials are designed to be useful to instructors who do not adopt MAGE.
Intended audience¶
ECE 30861 is taught to junior- and senior-level Computer Engineering students. Students typically enter with substantial programming and project experience, often supplemented by one or two software-related internships, but with relatively little prior formal study of software engineering. Their core preparation includes programming, data structures, and algorithms rather than a conventional sequence of software engineering courses.
The course therefore combines foundational software engineering knowledge with explicit practice in engineering judgment: choosing and adapting processes, representations, techniques, and controls to the characteristics of the system being built. In a conventional computer science or software engineering curriculum, much of the conceptual material might appear in a sophomore-level introductory software engineering course; the implementation and project expectations reflect the greater practical experience of this audience.