Assigned Wednesday, November 18
due: Monday, December 14, 8pm; for in-class presentation and discussion on Wednesday, December 16.
Create a networked version of your midterm project. You are not required to use your midterm project. If you would like to start fresh that is fine, and you could do with either the same concept that you did last time or a different one, responding to the same project option as last time (i.e. game, visualization) or a different one.
Some game ideas. If you are working on a game (either from your midterm or starting something new) try to make it multiplayer. Set up a client-server relationship between two code files: one running in Processing, and one running in a command line context, first on your local computer for testing, then eventually on a server. The Processing client should share data with the server, and the server should share that data with all clients that are currently connecting.
If you are working on a game, you could also try to implement a feature to save the state of the game. So for example, you could save the game score, level, or player location using a local JSON file. When someone opens your game, it would then read this file and let the user pickup where they left off.
Perhaps you will want to modify your game or start over to create something that is more conducive to saving and continuing — maybe more of an adventure or exploration game? Imagine a large map, broken up into smaller chunks, each one a raster image, and your player could move around onto different screens, exploring the map, and saving their location to continue later. Or, imagine a level described by a JSON file, so that you could easily add new levels simply by adding new data files without adding new Pyhton code. Your JSON file could be divided up into level objects, each one as a dictionary, and each one containing x,y values describing where to draw obstacles.
Some visualization ideas. If you are working on a visualization, integrate other APIs into your data using calls to external services. I can help you find these. These might include weather, wikipedia, social media, or postal data. Often such APIs are not free, so you will want to find some that are not for commercial use. You can find a way to link the data that you are working with to some other data with networked requests, and display this in your Processing sketch.
You could also think about adding a web-based API so that users can easily add data by entering it into a web form and clicking 'submit', which would update your visualization in real time, or whenever the program is stopped and restarted.
Initial planning, 3 parts. Due Tuesday, December 1, 8pm, for in-class discussion on Wednesday, December 2.
Write-up. (150-250 words.) Describe which option you are choosing and why. Explain what the project will do.
Mockups. In any medium you choose (paper, Photoshop, Illustrator, or something else) create sketches, diagrams, mockups or schematics that illustrate something about what you are trying to achieve. Create at least 3. Write a few sentences / captions to explain what these are and how they will function.
Pseudocode. Try to write an outline of your program. What are the main functional areas? Try to identify some specific functions that you will need to implement. Try to include a list of variables that you think you will need. Try to include details about specific pieces of logic that will be needed.
Upload this to your Google Drive folder in a new folder called "Final concept".
As with last time, we will have one class session dedicated to review and final project work. This will be Week 14: Wednesday, December 9.
As with last time, projects are due on a Monday to give you all and me time to review each person's project before our in-class project discussion on that Wednesday. You are expected to run everyone else's code before our class on Wednesday.
Also as with last time, I will again be assigning each of you as a "reviewer" for one person. You will be asked to pay closer attention to your "reviewee's" project, and to lead the discussion about it in class, by posing a discussion question about the project for the reviewee and the class to consider.
And again as last time, for our class discussion, I will ask each of you to share your screen. You will have about 8 minutes each. Please make 2-4 slides as described below. Then run your code and show us a demo.
The below guide is the same as last time:
Title and brief summary / intro. (3-5 sentences.) Tell us which option you chose and what your goal was for your project.
Context of demo. Tell us what we are about to see. Is this a fully-functional version? Did you only have time to imeplement a piece of what you initially set out to do? If so, what piece is this and how does it fit into your broader goals?
Technical achievement. Share at least one specific part of your project in some technical detail. It can be a loop, a conditional, an array, a function, or something else. What is the piece of code that you feel most proud or excited to have gotten working? Perhaps you want to include a bit of code on this slide and talk us through it.
Future work and questions. With more time, what would you do? What kind of feedback from the class would be helpful? Are you thinking about trying to continue this project into the final? If so, in what direction?
Run your code!
Please include a comment at the top of your code with:
""" Your name Course title & semester Project title and date """Your code should also include many comments throughout, explaining what various parts are doing.
Upload your presentation as a PDF, along with your sketch directory to your Google Drive folder in a new folder called "Final".
After our in-class discussion, you will have until Friday, December 17 at 8pm to make any revisions, edits, or adjustments based on our class discussion. As with last time, if you do make any edits, make sure to upload these to Google Drive as a new folder titled "Final Edits", — otherwise I won't know you have made edits, and might forget if you also submitted on time.