6.031 — Software Construction
Spring 2021

Problem Set 1: Reflection

Please think back to all the work you did on Problem Set 1, across both the alpha and beta submissions, and answer the following questions.

reflection

Method Locations in PS1

Why did PS1 have only one method per Java file? For example, practice() was in Practice.java, update was in Update.java, etc.

(missing explanation)

Why did PS1 ask you to put all helper methods in Utilities.java?

(missing explanation)

Suppose you write a helper method isSimilar() and want to use it in both src/.../Deduplicate.java and test/.../DeduplicateTest.java. In real code – not subject to PS1’s restrictions – where would be the best place to implement this helper method?

(missing explanation)

Types and Specs in PS1

Which types used in PS1 would have been better-off encapsulated as the rep of an abstract data type?

(missing explanation)

Recall that toBucketSets() returns List<Set<Flashcard>>, and practice() takes this same type as an argument. This encourages a client to call them together, as in:

Practice.practice(day, BucketSets.toBucketSets(bucketMap), RETIRED_BUCKET)

What is wrong with this expression?

(missing explanation)

Time Spent

How much time in hours did you spend working on the alpha? Please enter a number (which may be a decimal fraction).

How much time in hours did you spend working on code review? Please enter a number (which may be a decimal fraction).

How much time in hours did you spend working on the beta? Please enter a number (which may be a decimal fraction).

Collaboration

I helped somebody, or was helped, while both of our solutions were visible on our screens.

(missing explanation)

For every piece of code that I found on the web and used in my solution, I included a comment citing the source of the code.

(missing explanation)

I worked on my solution while somebody else’s solution was visible to me (e.g. on Caesar, or in some other window on my screen, or on somebody else’s screen, or on paper).

(missing explanation)

I obtained part or all of somebody else’s solution electronically, or provided part or all of my own solution to somebody else.

(missing explanation)

I publicly posted part of my solution online as part of a portfolio of code to show to recruiters.

(missing explanation)

I ran my test cases on another student’s code, or another student’s test cases on my code.

(missing explanation)