This repository will contain Problem sets, and the project for the Software Construction (6.031) Spring 2021 course.
The focus of this course is on writing code that is:
- Safe from bugs
- Easy to understand
- Ready for change
More on the course learning process, pros and cons about the course material, hardships and more can be found on my blog CS2Day
I have made good, compacted notes of each reading, breaking some concepts in my own words and summarizing some points. You can find the notes here.
- 01: Static Checking
- 02: Basic Java
- 03: Testing
- 04: Code Review
- 05: Version Control
- 06: Specifications
- 07: Designing Specifications
- 08: Mutability & Immutability
- 09: Avoiding Debugging
- 10: Abstract Data Types
- 11: Abstraction Functions & Rep Invariants
- 12: Interfaces, Generics, & Enums
- 13: Debugging
- 14: Recursion
- 15: Equality
- 16: Recursive Data Types
- 17: Regular Expressions & Grammars
- 18: Parsers
- 19: Programming with ADTs
- 20: Concurrency
- 21: Thread Safety
- 22: Locks & Synchronization
- 23: Queues & Message-Passing
- 24: Sockets & Networking
- 25: Callbacks
- 26: Map, Filter, Reduce
- 27: Little Languages I
- 28: Little Languages II
- 29: Team Version Control
- 30: Ethical Software Engineering
The Problem sets that are open sourced are related to 2016 iteration of the course, which can be found here
- 0: Turtle Graphics
- 1: Tweet Tweet
- 2: Poetic Walks
- 3: Expressivo
- 4: Multiplyer Minesweeper
- ABC Music Player
- Quiz 1
- Quiz 2