6.031: Software Construction
Spring 2020 · Course Staff · MWF11-12:30 (34-101)
Announcements
Tue Mar 10: ps2 alpha deadline moved to Mon Mar 30
Because of the disruption this week, ps2 alpha will now be due Mon Mar 30. There will be no slack on this new deadline, and everybody who has already taken slack on last night’s deadline will get those slack days back. ps2 code review will start after the deadline on Mon Mar 30.
Piazza help with ps2 will be available between now and the new deadline, as will some online lab hours (schedule coming soon).
Expect some more necessary calendar and syllabus changes as a result of this situation, as well as a new date for Quiz 1. These changes will be announced as soon as possible, please be patient.
Tue Mar 10: online 6.031 class tomorrow
Tomorrow (Wednesday) will be the first 6.031 online meeting. More details below, but here are your action items before class:
Install Zoom Client for Meetings on your laptop.
Find a partner and tell us who your partner is. Both partners should fill out this form. If you don’t already have a partner that you are used to working with in class, use the Piazza Search for Teammates post to find one.
You will be sent an invitation to a Slack called 6.031 Online; please accept it and set up an account. You don’t need to install the Slack desktop client if you don’t want to; using Slack in your web browser works fine.
More details:
Tomorrow’s class will be primarily streamed on Zoom. We’ll send out a URL for the Zoom meeting tomorrow morning, about an hour before class. But please prepare now by installing the client on your laptop using the link above.
If you are unable to use Zoom for some reason, there will be a secondary stream using a WebEx room, which should work entirely in your browser. That URL will also be sent out tomorrow morning before class.
If neither Zoom nor WebEx work for you, you will be able to follow what happens in class through a Slack channel that will show the current slides (but no video or audio). Slack will also be the place you can get help from the staff during classtime exercises.
We will continue to use Constellation, the clicker, the nanoquiz form, and other websites, as part of class activities.
You will need to find a partner before class, and plan to work with the same partner as much as possible for the rest of the semester. If classtime arrives and you are still unpartnered, there will be a place on Slack where you can get a partner.
Please coordinate in advance how you and your partner will communicate during classtime. Some kind of voice connection would be best (e.g. phone, skype, Facetime), otherwise realtime chat (e.g. SMS, IM, GChat, FB Messenger, or direct messaging in 6.031 Slack).
Mon Mar 9: 6.031 will be online starting this Wednesday
In light of MIT’s evolving coronavirus response, 6.031 classes will no longer happen in-person in 34-101, but will happen online. The days and times of class meetings (MWF 11-12:30) will remain the same. Our first online class will be this Wednesday. More information about how it will work will be forthcoming. A nanoquiz will still happen during classtime, and before-class work like reading exercises will still be due 10pm the night before as usual.
Because the transition to online classes will probably have some technical issues, you will be able to report technical problems by submitting a form, and we will take them into account in final grading at the end of the semester. In addition, the classwork grade for the entire semester will now be worth 5% of the final grade, and Quiz 1 and Quiz 2 will be worth 14% each.
Please be patient, and hold your questions about how this will all work, because we are still working it out. More information coming soon.
Sat Mar 7: 6.031 and sickness
In general, we would rather you miss class than come to class when you are sick (see makeups).
But in light of MIT’s current coronavirus response, we have to strengthen this advice even more: if you ever feel sick this semester, please stay home. Don’t come to 6.031 class. Fill out this form to let us know that you are sick.
Fri Mar 6: Problem Set 1 grades
Overall ps1 grades and grade reports are now available on Omnivore.
If you have questions, please see the FAQ about grading questions.
If you did not submit a reflection, you must do that before your grades are made available (Omnivore will give you a link to the reflection page).
Fri Mar 6: Quiz 1 in two weeks
Quiz 1 will be on Friday, March 20, 11:05am-11:55am, in Walker 3rd floor gym. That’s the usual class time, but not the usual class location.
The quiz is 50 minutes long, so class will end early that day.
The quiz will cover readings 1-15, from the start of the semester to today’s class on equality. Any and all concepts from readings 1-15 may appear on the quiz. Quizzes from previous semesters of 6.031 can be found in the quiz archive, although their content may differ a bit from the topics we’ve discussed this semester.
The quiz is on paper, so you will not need your laptop. It is closed-book, closed-notes, but you may bring a single 8.5×11″ double-sided page of notes, which can be either handwritten or computer-printed, but must be readable without a magnifying glass, and must be created by you. Since the process of creating a crib sheet conveys most of its learning benefit, you may not share these notes or use someone else’s.
A quiz review will be held during class time on Wed Mar 18, and as always, you can visit lab & office hours to ask quiz review questions, or post on Piazza.
General
Getting Started
Readings
- 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: Ethical Software Engineering
- 30: Team Version Control