# 4 Classes (51 Units)

**6.005**(12),

**6.006**(12),

**6.042**(12),

**15.301**(15)

# 6.005 Elements of Software Construction

Introduces fundamental principles and techniques of software development, i.e., 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; 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. Includes weekly programming exercises and larger group programming projects. 12 Engineering Design Points.

This class has 6.01, and 6.042 as prerequisites.

6.005 will not be offered this semester. It will be instructed by D. N. Jackson and R. C. Miller.

This class counts for a total of 12 credits.

You can find more information at the 6.005: Software Construction site.

# 6.006 Introduction to Algorithms

Introduction to mathematical modeling of computational problems, as well as common algorithms, algorithmic paradigms, and data structures used to solve these problems. Emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.

This class has 6.042, and 6.0001 as prerequisites. This class has 6.009 as a corequisite.

6.006 will not be offered this semester. It will be instructed by S. Devadas.

Lecture occurs 11:00 AM to 12:00 PM on Tuesdays and Thursdays in 26-100.

This class counts for a total of 12 credits.

You can find more information at the Materials site or on the 6.006 Stellar site.

# 6.042 Mathematics for Computer Science

Elementary discrete mathematics for computer science and engineering. Emphasis on mathematical definitions and proofs as well as on applicable methods. Topics include formal logic notation, proof methods; induction, well-ordering; sets, relations; elementary graph theory; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability. Further selected topics include recursive definition and structural induction, state machines and invariants, integer congruences, recurrences, generating functions.

This class has 18.01 as a prerequisite.

6.042 will be offered this semester (Fall 2018). It is instructed by F. T. Leighton,  Z. R. Abel and  A. Moitra.

Lecture occurs 2:30 PM to 4:00 PM on Tuesdays and Thursdays in 26-100.

This class counts for a total of 12 credits.

You can find more information at the 403 Forbidden site or on the 6.042 Stellar site.

# 15.301 People, Teams, and Organizations Laboratory

Surveys individual and social psychology and organization theory interpreted in the context of the managerial environment. Laboratory involves projects of an applied nature in behavioral science. Emphasizes use of behavioral science research methods to test hypotheses concerning decision-making, group behavior, and organizational behavior. Instruction and practice in communication includes report writing, team projects, and oral and visual presentation. 12 units may be applied to the General Institute Laboratory Requirement. Shares lectures with 15.310.

This class has no prerequisites.

15.301 will be offered this semester (Fall 2018). It is instructed by J. Carroll and P. Osterman.

Lecture occurs 11:00 AM to 12:00 PM on Mondays and Wednesdays in 32-123.

This class counts for a total of
15 credits.
This class counts as a **CI-M**.

You can find more information at the MIT + 15.301 - Google Search site.