Choose one of the following two project options:
Create an interactive game.
It should meet the following requirements:
It should have a visual representation of a "character" that moves around. The character can be anything: realistic or graphical, a raster image or a drawing with using 2D Primitives, anthropomorphic or not, human-like or animal-like or something else, a vehicle or a textual word or a rock or a blob of color.
The "character" should be able to move around in space based on keyboard controls from the user.
The game can be from any viewpoint or perspective: top-down, side view, on ground or flying in the sky or outter space or underwater or in an abstract world of ideas and concepts.
There should be at least one example of some kind of
blockage: a visual representation of something that
stops or impedes the movement of the character. (More
than one would be great, but at least one.) Like the
character, the blockage can be rendered as: a raster
image or drawn with 2D Primitives, animal or vegetable
or mineral, or something more abstract like
if statements to check the
character's movement and to determine if movement should
There should be at least one thing that moves "on its own". This can be a "bad guy," "good guy," or a "prize." It can be something that the character has to touch or avoid, or it can just be a benign set decoration with no effect. As with the character and the blockage, it can be a raster image or drawn with 2D Primitives, and can be any type of thing, realistic or abstract.
There should be some goal. Keep it simple. It can be as simple as moving to some part of the screen, or touching or avoiding the moving thing above.
When the goal is met, there should be a second level
level. (More levels are are fine, but finish all the
requirements stated here before working on that.) You
can indicate the level visually in any way you
wish. Different colors, shapes, raster images, changes
in the way the character or "bad guys" are drawn, or
anything. You will implement this with
if statement, a state
variable (which we'll talk about next week),
and functions, (which we'll talk about
in two weeks).
A data visualization is like a chart or a graph that attempts to convey some kind of information visually, through geometric pattern and illustration. But instead of a simple bar chart, line graph, or pie chart, you will use non-traditional shapes and patterns to represent your data.
Step one of this project will be to find some data to work with. This can be from a published dataset like the ones at NYC.gov/data, it can be something that you gather yourself through observation or empirical research, or it can be something you collect from friends or through a survey. Your dataset can be related to the weather, your personal life, economics, societal issues, history, literature, or something else.
Once you find this data you will need to do some work to get it into arrays for you to use within your program. This will involve using a common exchange format like comma-separated values (CSV). I can help you with this step. Once you have that, you will use loops to iterate over this data and render it in some way. Your sketch should have some degree of interactivity so that the user can use the keyboard or mouse to change the visualization in some way. For example, perhaps the user can toggle between two years, or zoom in on a specific piece of data.
In working on this, think about the biases and affordances of this method of argumentation. What does a geometrical display of data do well, and what does it do poorly? What kinds of arguments can one make with visualizing data? And what kinds are impossible? What modes of understanding does information presented in this way encourage?
remember that one objective of this course is to use hands-on engagement with the development of software as a way to help you develop a deeper understanding of what software is, what it does, and how it does. Thus, one of the primary goals of this project is to create a software project that helps you think about this.
In other words, a goal of the project is to create something that fits this tool: something that is necessarily a hand-coded software project. Don't try to implement something with Processing that would be better done with Adobe Premiere, or Excel, or Photoshop, or a simple web page.
Keep in mind our readings as you are working on the project, and think about how your project might function as example or evidence for those texts — i.e. something we might say that those theories apply to. But also, think about how your project and your process of making it can help you develop your own analysis and theories about how software functions, and perhaps demonstrate this understanding for others.
Initial planning, 3 parts. Due Wednesday, March 9, 8pm..
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 "Midterm concept".
Week 8 (March 24th) will be dedicated to in-class project work, with as much time for one-on-one help as possible.
Presentation and discussion. Thursday, March 31st
Projects are due on a Tuesday to give you all and me time to review each person's project before our in-class project discussion on that Thursday. Along with your code file, you should run Export Application and upload an executable file for Windows and Mac to your Google Drive. You are expected to run everyone else's code before our class on Thursday.
I will also assign 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.
For our class discussion you will have 8 minutes each. Please make 2-4 slides and submit them to me as described below. Then run your code and show us a demo. You will be able to do this all from my computer (connected to main projector). You can use the following as a guide:
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 "Midterm".