Laboratory in Software Engineering

Lecture Notes

SES #

TOPICS

LECTURE NOTES

Week 1

L1

Introduction

(PDF)

L2

Object semantics

(PDF)

Week 2

L3

Subclassing

(PDF)

L4

Specifications

(PDF)

L5

Testing

(PDF)

Week 3

L6

Object model notations

Code summary

(PDF)

(PDF)

L7

Introduction to ADTs

(PDF)

Week 4

L8

Representation invariants

(PDF)

L9

Abstraction functions

(PDF)

L10

Dependencies and decoupling

(PDF)

Week 5

L11

Exceptions

(PDF)

L12

Equality

(PDF)

L13

Polymorphism: guest lecture by Gilad Bracha

 

Week 6

L14

Subtypes and subclasses

(PDF)

Week 7

L15

Classes and interfaces

(PDF)

L16

Usability 1

(PDF) (Courtesy of Prof. Robert Miller. Used with permission.)

L17

Usability 2

(PDF) (Courtesy of Prof. Robert Miller. Used with permission.)

Week 8

L18

Design patterns

(PDF)

L19

Design project experiences 1

(PDF)

L20

Design project experiences 2

(PDF)

Week 10

L21

Managing a small software team

(PDF) (Courtesy of Corey McCaffrey. Used with permission.)

Week 11

L22

Guest lecture by Joshua Bloch and Neal Gafter

 

 

Recitations

SES #

TOPICS

RECITATION NOTES

R1

Specification and testing

(PDF)

R2

ADT, rep exposure, and object model diagrams

(PDF)

R3

Abstraction functions and representation invariants

(PDF)

R4

Equality and hashing

(PDF)

R5

True subtyping and the substitution principle

(PDF)

R6

Design patterns

(PDF)

 

Assignments

The assignments in this section refer to Athena, which is MIT's UNIX-based computing environment. Assignments are due in the lecture (L), recitation (R), quiz (Q), and project (P) sessions noted in the table. We recommend that you read the entire problem set before you begin work. Important background material on problem set procedures and hints is provided below the table.

ASSN #

TOPICS

PROBLEM SETS

SUPPORTING FILES

0

Introduction to 6.170 tools and infrastructure

This assignment will introduce you to the various tools that you will use in 6.170.

(PDF - 2.0MB)

(ZIP) (The ZIP file contains: 20 .java files.)

1

Java and coding to specification

This assignment will provide practice reading and interpreting specifications, as well as reading and writing Java source code.

(PDF)

(ZIP) (The ZIP file contains: 10 .java files.)

2

BasicList

Create a blackbox test from the specification of a module.

(PDF)

(ZIP) (The ZIP file contains: 2 .java files.)

3

Object model extractor

Write a tool to extract object models from Java bytecode.

(PDF)

Hints (PDF)

(ZIP) (The ZIP file contains: 2 .java files.)

4

Design an Abstract Data Type

Design an ADT for a graph.

(PDF)

(ZIP) (The ZIP file contains: 7 .java files.)

5

Stata Center navigation and analysis

Is your reusable ADT from problem set 4 really reusable? Try to use it to find directions in Stata and see.

(PDF)

(ZIP) (The ZIP file contains: 1 .java file.)

6

Boggle

Create a GUI for the popular board game, Boggle.

(PDF)

(ZIP) (The ZIP file contains: 20 .java files.)

Background Material

Problem set procedure (PDF)

Hints on succeeding on 6.170 problem sets (PDF)

The following two reference files, which should be used jointly with the problem set procedure, provide additional details on how to complete the problem sets for 6.170.

Emacs and command line reference (PDF)

Eclipse reference (PDF)

Projects

A major component of 6.170 is the final project, counting for 35% of the student's total grade. Students work in teams, and all team members receive the same project grade. Although full collaboration on all aspects of the final project is permitted, every member of the team is expected to contribute a roughly equal share to the design and implementation. Each team may enter its final project implementation into a class contest for an award.

Gizmoball

Gizmoball is a customizable pinball game.

Gizmoball (PDF)

Amendment and errata (PDF)

Supporting files (ZIP) (The ZIP file contains: 1 .jar file, 3 .java files, and 3 .xml files.)

RSS Reader

An RSS reader is an application that aggregates feeds syndicated in the RSS format.

RSS Reader (PDF)

Amendment and errata (PDF)

Related Resources

The documents in this section refer to Athena, which is MIT's UNIX-based computing environment.

Additional 6.170 Resources

Working at home (PDF)

6.170 diagrams (PDF)