17-514   Principles of Software Construction: Objects, Design, and Concurrency

Location: Pittsburgh

Units: 12

Semester Offered: Fall, Spring

Software engineers today are less likely to design data structures and algorithms from scratch and more likely to build systems from library and framework components. In this course, students engage with concepts related to the construction of software systems at scale, building on their understanding of the basic building blocks of data structures, algorithms, and program and computer structures. The course covers technical topics in four areas: (1) concepts of design for complex systems, (2) object-oriented programming, (3) static and dynamic analysis for programs, and (4) concurrency. At the conclusion of this course, students will have substantial experience building medium-sized software systems in Java. WAITLIST PROCESSING: Students with an SE minor will be considered first, followed by grade, and order you are on the waitlist.

Instructor: Jonathan Aldrich, Charles Garrod, Jeremy Lacomis, Claire Le Goues