This course provides an introduction to the fundamental principles and techniques of software development that have greatest impact on practice. Topics include capturing the essence of a problem by recognizing and inventing suitable abstractions; key paradigms, including state machines, functional programming, and object-oriented programming; use of design patterns to bridge gap between models and code; the role of interfaces and specification in achieving modularity and decoupling; reasoning about code using invariants; testing, test-case generation and coverage; and essentials of programming with objects, functions, and abstract types. The course includes exercises in modeling, design, implementation and reasoning.
- Subject:
- Applied Science
- Computer Science
- Engineering
- Material Type:
- Full Course
- Provider Set:
- MIT OpenCourseWare
- Author:
- Jackson, Daniel
- Miller, Robert
- Date Added:
- 09/01/2008