MIT MIT-OCW
Laboratory in Software Engineering
MIT's introduction to building large software systems teaches a programming method centered on recognizing and describing useful abstractions. Topics include modularity, specification, data abstraction, object modeling, design patterns, and testing. Students work through several programming projects of increasing size, some solo and some in groups, applying these concepts directly rather than just reading about them. The course has since been superseded on OCW by 6.005 Elements of Software Construction, but this original version remains available with its full set of materials. Coursework, assignments, and readings are provided free through MIT OpenCourseWare; there is no certificate offered.