MIT OpenCourseWare


» 进阶搜寻
 课程首页
 教学大纲
 教学时程
 相关阅读资料
 课堂讲稿
 复习/实习课程
 实作课程
 作业
 测验
 专题
 使用工具或软件
 相关资源

教学大纲


Objectives

The course covers a wide range of software development skills, from analyzing a problem to implementing a solution. On completion of the course, students should be able to:

  1. Analyze a software development problem and express its essence succinctly and precisely;
  2. Design a module structure to solve a problem, and evaluate alternatives;
  3. Implement a module so that it executes efficiently and correctly;
  4. Work in a small team, cooperating on these aspects of software development, and exchanging ideas in a constructive and organized fashion;
  5. Appreciate engineering issues in the development of software, such as the importance of addressing the user's concerns, working with limited resources, maintainability, dependability, and division of labor.

Prerequisites

The course assumes that the student is able to

  1. Write a small (ie, 100 line) program to meet a specification;
  2. Understand basic notions of imperative programming (such as loops, procedures, exceptions, and aliasing) and of object-oriented programming (such as objects, references, self, interfaces, and subclassing);
  3. Use, and understand programs that use, basic data structures such as arrays, hash tables, trees and lists.

Outcomes

On completion of the course, students should be able to

  1. Identify key entities and relationships in the problem domain; write succinct textual descriptions of problems in the style of a user manual;
  2. Design programs: Construct a design consisting of a collection of modules, using module dependency diagrams to express and evaluate couplings between modules, and object models to relate concrete to abstract state; Exploit well-known design patterns (such as Iterator, Observer, Factory and Visitor); Devise appropriate module specifications and express them informally in terms of pre- and post-conditions;Understand the appropriate roles of subtyping and inheritance, and use them effectively.
  3. Implement programs: Write object-oriented code to satisfy the specification of a module; Express rep invariants, understand their impact on efficiency and ease of implementation, and implement them as runtime assertions; Understand the fundamental notions of data abstraction, and read and write informal abstraction functions for simple datatypes; Evaluate the correctness of a module by careful manual review using the specification, rep invariant and abstraction function; and Develop unit and system-level test suites, and evaluate their effectiveness using simple notions of specification and code coverage.
  4. Perform a small development in a team, including problem analysis, design, implementation, and testing.

Each outcome supports the objective with the corresponding number. Objective (5) is supported by outcome (4).




 
MIT Home
Massachusetts Institute of Technology Terms of Use Privacy