Course Description
This course introduces fundamental principles and techniques of software development. Students learn how to write software that is safe from bugs, easy to understand, and ready for change.
Topics include specifications and invariants; testing, test-case generation, and coverage; state machines; abstract data types and representation independence; design patterns for object-oriented programming; concurrent programming, including message passing and shared concurrency, and defending against races and deadlock; and functional programming with immutable data and higher-order functions.
Lecture Notes
Lecture 2: Test-first programming
Lecture 5: Regular expressions and grammars
Source
Miller, Robert. 6.005 Elements of Software Construction, Fall 2011. (Massachusetts Institute of Technology: MIT OpenCourseWare),http://ocw.mit.edu (Accessed 30 Jul, 2012). License: Creative Commons BY-NC-SA