Recitation 10: Final Project Proposals
Preparation
At this point in the course, you know enough about coding to write some very interesting programs! So far, the complexity of your programs has been limited, since we’ve tried to finish programs in a single lab or recitation session. For your final project, you will design and code a more complex program of your choice. You will have until the end of the course to work on your final project, so make something ambitious!
You can work on the final project either individually or with a partner.
In preparation for recitation, you will create a preliminary software requirements specification (SRS) for your program. Your design should include writing, sketches, and/or screenshots. For example:
Note: Although we recommend using Snap! for this project, there is no requirement to do so. For example, you can program games using pygame or Godot, or mobile apps using MIT App Inventor. Of course, if you use something other than Snap!, we will be less able to provide assistance.
At Recitation
At recitation, the instructor will give advice on each team’s project proposals. During recitation, you should spend at least 30 minutes coding your project. Finally, you should develop a timeline, and if you are working with a partner, a plan for dividing the work.
Note: You should plan to complete your final project by the last day of class (April 29th, 2022). On the last day of class, you will present your project to the class. Links to final projects will be shared on the course website.
Collaborating in Snap!
Collaborating on code in Snap! comes with some challenges. Suppose that Peter starts the project, then shares a link with Maddie. If Maddie edits the project, then saves, her changes will be saved to her Snap! account. This means that Peter won’t see Maddie’s changes unless he looks at her copy of the project! There are several options for collaborating in Snap!
- Work on a single copy of the project, using pair programming to collaborate. So if the project is saved to Peter’s account, Maddie will only edit the project when she uses Peter’s computer.
- You could also make a new, shared Snap! account just for the project. You would need to coordinate to ensure you don’t both edit the project at the same time, or you will overwrite each other’s changes when you save! Using a shared device instead of a shared account has the advantage of preventing you from both editing the project at the same time.
- Work on two versions of the project, copying your partner’s project before you make new edits. So if Maddie wants to add to the project saved in Peter’s account, she will make a copy, saving changes to her account. Before Peter makes any more edits, he should make a copy of Maddie’s project, saving it to his account. That way, he will have the latest changes.
- Work on two versions of the project, exporting changes as blocks. If you write your code in custom blocks, you can use the “File”, “Export blocks…” option to download your blocks. Then, you can email your blocks to your partner, who can import them into their project.
As you can see, collaborating is not as simple as editing a shared Google Doc. Similar challenges exist for every major programming language. Regardless of what tools you use, the most essential thing is to communicate who is working on what at any given time.
Submit
Ensure that all teammates submit to Moodle. Everyone should upload a PDF containing a filled-in version of the template shown below:
Template
- Team member name(s): Peter and Maddie
- SRS document:
- Link to the in-progress project: LINK
- Timeline and division of work:
Due Dates | Peter’s Tasks | Maddie’s Tasks |
---|---|---|
Friday, April 15th | Make it so the character can move from screen to screen | Gather and/or create all the images and sounds we will need for actors and backgrounds (attribution-free) |
Friday, April 22nd | Code the egg hunting minigame. Code the egg thief and wild animal attacks. | Code the day system and countdown. Code the egg sales and ticket purchase. |
Friday, April 29th | Fix bugs and help with presentation | Prepare presentation and help with bugs |