CMU 15-539: Computer Science Pedagogy, Fall 2017
Homework 2
Due Wed 13-Sep at 11:59pm


As with hw1, this hw is optionally collaborative (except where indicated otherwise), where collaboration is preferred, though each person in a group should create their own code artifacts and other responses as indicated below (so the value of the group is in discussing issues, helping debug, etc, but not in creating artifacts). You may work in teams of up to 3 students.

What to submit to autolab: a single zip file, hw2.zip, which contains a single folder, hw2, which itself contains all the files required for this hw.

  1. Logistics
    1. Teammates + Credits
      At the top of your hw submission file, list your hw teammates (if none, list that). Also, clearly list any other credits -- any sources you used in any way for this hw. Since part of the hw explicitly involves using other people's projects, this section will surely include several citations.

    2. Timesheet
      Keep a log of your time investment in 15-539. Record day/duration/activity, and then a weekly total. Submit this detailed timesheet in your hw writeup. In addition fill out this Time-Reporting form with the summary data of the week's time. Note that this will not directly impact your grade, but rather will just help us pace the course properly, so please report accurately.

  2. GitHub
    As discussed in class and posted on piazza, do the following:
    1. Try Git (experienced students can skip)
    2. Complete all three git lessons on the GPI page:
      1. Getting Started with Git
      2. Git Command Overview
      3. Using git on GitHub
    3. Understand the GitHub workflow
    4. Finish the Git Game
    5. (optional) Learn git branching
    You can work in groups of up to 3 students, but you have to do the work yourself. The advantage of working in a group (beyond the social plus of it being more fun) is that you have others to help answer questions if you get stuck. There's also piazza for that. :-)

  3. CS1 Content
    In class on Thursday we will discuss Code Combat a bit more, with an eye towards this part of hw2. Here, students will work in teams of 3 (no more, no less, please do not ask for exceptions) to write their own small app (in our animation framework in Brython, or in the 112 animation framework in Python), and will design some clever and engaging coding exercises (with sample solutions) that are embedded in that app. Grading will not depend (much) on the UX of the app, so go easy there (truly, do not waste hours of time turning this into a 112-level term project; it's not!). Grading will however depend on the cleverness and originality and potential 9th-grade-appeal of both the app and the exercises themselves. As for the exercises, you will need to create 9 exercises, basically filling in this grid:
                        Unit 1      Unit 2      Unit 3
                      (fn calls)   (+ if's)    (+ loops)
    Level A (easy)        1A          2A          3A
    Level B (medium)      1B          2B          3B    
    Level C (hard)        1C          2C          3C
    
    9 exercises is not so much, as each exercise should not be that large. For a 9th-grade student in Unit 1, the function-call exercises may have solutions that are around 1-10 lines of code.

    Place your solution in the folder hw2/cs1Content/. Include a file main.py which is your game, and a second file, exercises.py, that contains your 9 exercises (1A, 1B, 1C, 2A, 2B, 2C, 3A, 3B, 3C), in that order, clearly separated by comments (lines of ###'s). Each exercise should contain a plain English writeup in a triple-quoted string at the top of that section,, describing that exercise (be brief, to the point), and then just the Python code that solves the exercise. Your main.py file might also already contain all the working solutions, or not, your choice.

    Have fun. Be original. Be clever. Be pedagogically compelling. Be bold.

  4. Team-Based Exercises
    Each team that you are on will assign its own team-specific hw2 exercises. Submit those along with the rest of hw2, in your hw2.zip file.