17-514 Principles of Software Construction: Objects, Design, and Concurrency
12 units, Carnegie Mellon University
Software engineers today increasingly collaborate with AI agents, leverage existing libraries and frameworks, and remain responsible for the correctness, security, and maintainability of systems whose code is increasingly generated. This course engages students with modern software engineering practices for designing, implementing, testing, deploying, and maintaining medium- to large-scale software systems in an AI-assisted development environment. Students will develop systems while using contemporary development workflows that incorporate coding agents, automated testing, static analysis, and collaborative development tools. The course covers (1) system design and modularity for complex software systems, (2) software engineering with coding agents and automated development workflows, (3) testing, verification, and quality assurance practices for AI-assisted software development, (4) libraries, frameworks, APIs, and software reuse at scale, (5) concurrency, asynchrony, and distributed coordination in modern systems, and (6) deployment, operations, and observability of running systems. Students will also study the limitations, risks, and security implications of agentic software engineering, including sandboxing, supply-chain security, credential handling, and evaluating the trustworthiness of agent-generated artifacts. By the end of the semester, students will have designed, built, and operated a complex software system using AI-assisted development tools and engineering practices that emphasize modularity, correctness, security, and maintainability.
Prerequisites: 15-122 (min C) or 15-121 (min C)
Offered: Spring 2027, Fall 2026, Spring 2026, Fall 2025
Courseweave needs JavaScript to show sections, workloads and planning tools.