6.005 | Fall 2008 | Undergraduate

Elements of Software Construction

Labs and Projects

Project 2: An abc Music Player

Description:

The purpose of this project is to help you gain experience in (1) designing and implementing programs in the functional style (that is, making extensive use of functions over immutable types); (2) designing and implementing abstract types; and (3) using common design patterns for constructing and traversing structures (such as Variant as Class, Interpreter, Iterator, and Visitor). It also introduces you to the fundamentals of compilation, in particular: (4) expressing a language as a grammar; (5) converting a text to an abstract syntax tree; and (5) organizing a compiler into phases (lexing, parsing, static semantic analysis, etc). Finally, the project will give you further practice in software engineering fundamentals, such as (6) clarifying a problem statement; (7) inventing clear and simple interfaces to minimize coupling, and identifying and resolving undesirable dependences; (8) structuring a program to make it easily testable, organizing, executing and evaluating test suites; and (9) working collaboratively in a team.

pdf
96 kB
Project 2: An abc Music Player

Course Info

Learning Resource Types
Problem Sets
Lecture Notes
Projects
Programming Assignments with Examples