On this page:
1 Release
2 Working on Homework
2.1 Pairing
2.2 Source Control
2.3 Journal
3 Submission
4 Grading
5 Code Walk
5.1 Logistics
5.2 Structure
6 HW Frequently Asked Questions(FAQ)

Homework Policies

Last updated: Mon, 19 Jan 2015 18:30:07 -0500

This page explains the homework policies for this course.

1 Release

Homework assignments are released every Monday.

Like all software projects, the homework requirements may change during the week. All changes will be announced via Piazza. You are responsible for learning of any requirement changes and incorporating them into your solution. Students who write well-organized, maintainable code will find it easier to incorporate new requirements.

2 Working on Homework

2.1 Pairing

For the first third of the semester, you will work on homework individually,

For the second third of the semester, you will work in pairs, assigned by the course staff. The pairs will be determined by your current standing in the course.

For the last third of the semester, you will work in pairs, with a new partner, assigned by the course staff.

For paired assignments, each partner is responsible for understanding all parts of the submitted solution. The best way to guarantee this is to practice pair programming.

2.2 Source Control

As you make progress on the homework, you should make regular commits to your repository.

2.3 Journal

To help you keep track of the various decisions you made, it’s a good idea to keep a separate journal. We won’t formally grade your notebook, but it will come in handy for recalling your thoughts during your code walk.

3 Submission

Homework is typically due the following Monday at 9pm EST (unless otherwise specified).

Submit your homework assignments by commiting the appropriate files to your assigned github repository (pairs will work with a shared repository). The last commit before the deadline will be graded as the "submitted" solution.

We automatically collect and grade the latest commit before 9pm EST. There are no extensions. Late submissions will not be accepted.

The files for each assignment must be located in your repository in a directory called setXX. Note the two digits for the assignment number. So the first homework should be in directory set01.

Time on task: In every homework file, please indicate how many hours you spent working on that part of the assignment via a variable named TIME-ON-TASK. For example:

(define TIME-ON-TASK 5.5)

4 Grading

On the due date, at the due time, we automatically harvest your solutions from your repositories and apply automated tests.

The automated test results determine approximately one third of your weekly homeowrk grade. Each partner receives the same automated test score. A test report explaining your tests score will be commited to your repository before your code walk.

The remainder of your homework grade each week is determined by your code walk presentations.

5 Code Walk

Code walks are a centerpiece of this course.

The software industry commonly employs code walks as an effective way to improve software quality. As the saying goes, "given enough eyeballs, all bugs are shallow".

For a code walk to be useful, however, a programmer must adequately communicate his or her ideas:
  • via clear, readable code,

  • and in a coherent verbal manner.

Thus the above two points are major goals of this course.

5.1 Logistics

You will be assigned a weekly code walk time and place at the beginning of the semester, and with each new pairing.

We will work with you to find a time that is convenient for you. Once the code walk schedule is set, however, we cannot change it. It is your responsibility to attend your code walk each week. Failure to show will result in a 0 for that assignment. If you absolutely cannot make your scheduled time, then it is your responsibility to find another student/pair to switch with you for that week.

5.2 Structure

An individual code walk lasts fifteen minutes and a pair code walk lasts thirty minutes.

During pair code walks, both pairs are responsible for the entire assignment and may be called on to explain any portion of the code.

During a typical code walk, a pair of TAs will attempt to read and experiment with (select) portions of your code.
  • Points will be deducted if the TAs cannot understand any part of the code, or for any style deviations. This part is worth another one-third of the hw grade. Partners receive the same score for this part of the grade.

  • As they are reading the code, the TAs will ask questions about design decisions, implementation details, testing strategy, or anything else about your experiences writing the code (e.g., what mistakes you made, where you got stuck, how you got unstuck, etc.). You may find it helpful to keep a log as you are programming, to better remember decisions you made and how you fixed mistakes.

    Any partner may be called on to answer questions on any part of the code. Poorly reasoned answers:
    • "I copied it from the textbook",

    • "I copied it from the course materials",

    • "I only did that because I don’t want to lose points",

    • "I don’t know, my partner did that part"

    will result in point deductions. This part is also worth approximately one-third of the hw grade and partners will receive different scores for this portion of the grade.

6 HW Frequently Asked Questions(FAQ)

  1. Q: My computer broke. Can I have an extension?

    A: No.

  2. Q: Can you use <some other commit>?

    A: No.

  3. Q: Can I just make one small change?

    A: No.

  4. Q: I’m not feeling well. Can I have an extension?

    A: No. Unless you show a doctor’s note.

  5. Q: Can you change my code walk time this week?

    A: No.

  6. Q: I missed my code walk. Can I reschedule?

    A: No.

  7. Q: I misnamed my homework file. Can I fix it?

    A: No.