CMU 15-539: Computer Science Pedagogy, Fall 2017
Homework 1

Sat 2-Sep, 11:59pm
(Earlier is better)
1. Hw1 Grading Session Sign-up Form (please submit as early as possible)
2. 539 Team Interest Form
Sun 3-Sep, 11:59pm 3. Hw1 Non-Autolab Submission Form
4. Hw1/Week1 Time Reporting Form
TBD/Hopefully soon... 5. Hw1 Autolab Submission (once we have Autolab setup...)

This hw is optionally collaborative, 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.

Grading will be done in person, with a TA-moderated discussion. If you work in a group, your group will have a grading session. If not, you will be assigned or added to a grading group.

What to submit to autolab: a single file (txt, pdf, doc, docx, html all ok) with answers to the questions below.
  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. Study / Experience / Analyze Related Work
    For each of the following, spend around 2 hours per section/topic, really deeply working with it, experiencing it, thinking hard about design and pedagogical issues. Do not rush this section. Even though the material you will be studying is technically "easy", you are not trying to learn the material, but rather study how it is being taught, thinking hard about what it says about students who we will be trying to teach, generating clever ideas for our curriculum, and so on. Take your time, do this well.

    1. Scratch
      Go to, work with Scratch. Create a game of some sort that uses a fair number of the various coding blocks available. Don't worry so much about the artwork or even the flow of gameplay. The point is to get to understand what Scratch is, how it works, what it does well, what is limitations are. Also, there are literally millions of Scratch projects shared on their site. Find some nice ones, play with them, study them. What to submit? A link to the original project you created, the links to the other projects you studied, and then some thoughts about what Scratch does well and what its limitations are -- basically, why don't we use Scratch for our 9th-grade course?

    2. CodeHS's free Karel mini-course
      Sign up at for codehs as an at-home learner, and take their free Karel mini-course, or get as far as you can with the 2 hours you have here. Answer similar questions to above: what works well, what works poorly. Be thoughtful. Also, submit a link to a screenshot of your course as far as you got it in the time allotted.

    3. The Python activities at
      Go to and focus only the Python activities (search for "Python"). Find several (and preferably not just the first few, but several randomly chosen from those available). Study them as described above. Include a link to each, along with your reflections.

  3. CS Pedagogy (video)
    This section will take about 20 minutes. First, watch this video:
    (Hint: we suggest watching at 1.5x with subtitles on. It will take 13 minutes this way. Be focused!) Then, answer these questions: Who is speaking? What are her qualifications? What are her main points? How does this relate to our mission? Are you convinced? Why or why not? Bonus: the speaker is also a comedian. Find some of her best work and provide a link to it (include the time in the video where you think she's funniest). Have fun!

  4. Study / Use / Improve our Animation Framework
    This section will also take about 2 hours. We will post a link on piazza to an early draft version of our animation framework (and we may post an updated version during the hw, if so, please use that one). Carefully study the kitchen sink code in this draft. Be sure to understand what every call is doing, how every single line of that example works. Then, write your own game using this framework, something fairly simple (more than just moving a square, but less than Tetris; Snake is fine, for example, but we don't want everyone writing Snake). Note that this early prototype stores your files in the browser not on your hard drive (so you should make your own backup copies outside the browser every so often). Store it in a browser file named something other than "", since that one gets deleted every time you reload the web page. What to include in the hw1 text file you submit on autolab: (2.1) a copy of your program you created, and (2.2) some very incisive, thoughtful, helpful thoughts on what changes or additions we might make in the framework's design. Remember, in designing the framework, we want it as powerful as possible while still being as simple and usable as possible for novices, with a bias on the latter over the former. That is, it has to be REALLY easy to use, and only then as powerful as we can get it. For example, this is why there are no methods, only functions, and why the functions are top-level, and why we have an app object only for model properties, and so on. Anyhow, scrutinize the framework, think about every call as well as clever new ones, and suggest ways we can improve it.

  5. Register interest in Teams
    While everyone in 15-539 will be designing and implementing curricular content, we have many other tasks to do, far too many for us all to do all of them. And so we will split into teams responsible for these many tasks. As part of this hw, fill out this Team-Interest form on which you will register your interest in these teams, and include some small details about your background and suitability for those teams. Here are the teams (though this list may actually be amended as the semester progresses) we need. Note that these will not exactly correspond to the form (no need to list universal teams, and some other teams will be managed independently of the form):

    • Universal Teams (everyone is on these teams)
      • CS1: Content
      • Ideation (Fun + Engaging + Awesome Ideas)

    • Initial Student/Staff/Faculty Teams
      • Graphics+Animation Framework
      • Autograder
      • Frontend
      • Backend
      • Graphic Design
      • Student + Teacher UX design (overall "look-and-feel", including IDE, maybe a visualizer)
      • Student + Teacher UX implementation (probably React components, as per Frontend team)
      • Accessibility
      • CS Pedagogy
      • Related Work / Competitive Analysis
      • Extended framework (API's (Google, Amazon, Facebook,...), open-source apps?,....)
      • Media: Video (production, distribution, viewing/tracking)
      • Media: Online Textbook/Notes (production, distribution, viewing/tracking)
      • Media: Free media (sounds, images) for students (on CDN? make our own?)

    • Initial Staff/Faculty Teams
      • Source Mgmt (bug tracking, dev vs pilot vs release, versioning, contribution tracking, ...)
      • Outreach Mgmt (tutoring, relationship building, events, focus groups / testing,...)
      • Legal (IP, Clearances, IRB, FERPA, ...)
      • 539 Student Training (web dev, git, pedagogy, ...)
      • 539 Grading
      • Process (issue tracking (like bug tracking), team weekly reports,...) + QA + Code Reviews
      • Leadership / Project Mgmt

    • Pending Teams
      • Media: Web (539, CS Academy, CS Academy dev, CS1-PD pilot, CS1 pilot)
      • CS2-APCSP: Scope+Sequence, Content
      • Brython
      • Standards (eg, Blackboard + Canvas integration)
      • Localization (multi-language support)
      • Marketing (later...)