Final Projects
The Final Project Assignment Prompt (PDF, 1 page).
The Final Project Sign-Up Form (Due 11/20 at 9am but your answers can be changed after that if you learn more or change your mind.)
Final Project Fair
Hussey Room, 2nd Floor, Michigan League
Wednesday, December 11
10:00 a.m. - 11:20 a.m. (normal class time
Frequently Asked Questions (FAQs)
(Last updated Monday, 25 Nov 2019.)
- What should the topic of the reflection essay be?
- You get to choose your own prompt/topic, but it should be similar to the other essays we've done for previous assignments. For instance, it should have a topic, an argument, a genre, and an audience in mind. It might help you to state the genre (letter, memo, magazine article, ...) and audience (other programmers, public policymakers, a younger version of yourself, ...) at the beginning of the essay. Like the other essays, this is not meant to be a diary.
- What does it mean that the project must be 'readable, maintainable, and well-commented'?
- Remember that every group is doing a different project. You need to write your code so that the instructors can understand what it is that your project is doing. You might want to imagine that the instructors are programmers or Web developers who have to take over for you after your departure. Do they have all of the information they need without talking to you?
- What qualifies as 'an extension' of an existing assignment? How complex should it be?
- You should spend as much time per person as you would have spent on one of the earlier assignments. When you show your project to students in the class that are not in your group, they should notice that your project contains some material that they are not familiar with from the existing assignments that they have done.
- What are we supposed to do during the project fair?
- Each group will demo their project. You will have half of a table reserved for you on which you will place a laptop. (If you do not own a laptop you can borrow one from ITS or a friend.) Power outlets will be available. You will have no more than one minute to show your audience what your project does. You will want to highlight things that are new and not covered in the previous assignments. During the time you are not presenting, you will be the audience for other projects.
Topic Ideas and Examples (from lecture on 10-28)
- Make a Dynamic/Responsive Web Site. Assignment #2 produced a very simple Web site. You can extend this assignment by teaching yourself a framework such as the Bootstrap framework (which includes JavaScript and dynamic HTML) and producing a near-professional-quality responsive Web site. You may propose another framework, but Bootstrap is a pretty straightforward extension of the material in Assignment #2. (Note: If you choose this topic, you must use JavaScript (or another programming language) to meet the programming requirement of the final project -- markup languages like HTML and CSS do not meet the programming requirement.)
- (EXAMPLE for Make a Dynamic/Responsive Web Site:) A member of a student group re-designed the group's simple Web site using Bootstrap. The revised Web site dynamically changed to present a better user experience for the user's screen size. It included interactive features like collapsable/expandable panels, slideshows, tooltips, and modal dialogs.
- Make a More Complex Game/Story/Visualization. Assignment #3 produced a simple game in Scratch and Assignment #4 produced a some animations/charts in Processing. You can extend these assignment by producing a more elaborate game, interactive story, or visualization as long as this involves teaching yourself material about Scratch/Processing that was not covered in Assignment #3/4. It is also possible to re-write your Scratch game (Assignment #3) in Processing (Assignment #4) for a more professional appearance.
- (EXAMPLE for Make a Complex Game/Story/Visualization:) A fan of the movie Drive made a video game in Scratch based on the movie's story. His/her code included new programming techniques like advanced use of events and recursion.
- Visualize Real Data. Produce/export data (such as an RSS feed or an API) from some online platform. Then pass/read the data to/in a Processing sketch (Assignment #4) to visualize it or represent it in an interesting way. You could also embed the processing sketch on a public Web page (Assignment #2).
- (EXAMPLE for Visualize Real Data:) A twitter fan retrieved the data from the twitter accounts belonging to their friends, read that data into a Processing program, then made an interactive depiction of the text and summaries of the activity of their friends on twitter.
- Program a Physical Object. Use your knowledge of either Scratch (Assignment #3) or Processing (Assignment #4) to make an Arduino device that allows you to sense or control objects in the physical world without a laptop or desktop computer.
- (EXAMPLE for Program a Physical Object:) A student used an Arduino kit to build and program the behavior of an LED mood light. The pattern and colors of the lights were set using Scratch and S4A.
- Make a Phone App. Extend your knowledge of Processing (Assignment #4) to produce a mobile phone app for Android phones by writing an app using Processing for Android. (Note: Unfortunately making iOS [iPhone] apps is much harder right now and we are not recommending it.)
- (EXAMPLE for a Phone App:) A student could use Processing for Android to make an artistic Live Wallpaper (animated background) on their phone that changes shape in response to the phone's sensors which detect the device's motion and ambient temperature.
Inspiring Examples / Extra Resources (discussed in lecture on 11-18)
- Dynamic Web Sites
- Adding JavaScript to your Web page meets the programming requirement of the final project. JavaScript is easy to learn even if you have never programmed in JavaScript before.
- JQuery is a library of pre-written JavaScript programs. This is an example of a way to include JavaScript in a Web page to meet the programming requirement of the final project.
- Bootstrap is an example of a popular framework that includes HTML, CSS, and JavaScript together -- it is often used in the Web development industry.
- Scratch
- Advanced Scratch Project Studio -- good source of ideas
- Using Scratch to Programmatically Compose Music
- Drawing Fractals With Recursion -- example of an advanced programming technique
- Recursion (note this was written for Scratch 2.0 and some things may have changed for Scratch 3.0)
- RPG Scratch Project Studio -- many great examples of role-playing games written in Scratch
- Processing
- The OpenProcessing Art Repository (cool examples)
- Processing Tutorials
- specifically, see The Data Tutorial which includes working with APIs in Processing.
- alternately, see The Processing for Android Tutorials which explain how to make a phone app for Android phones using Processing.
- Search YouTube for examples of simple phone apps made with Processing for Android
- Jer Thorp's Additional Processing Tutorials (includes several uses of APIs)
- Using the Twitter API with Processing (warning, requires update for newer version of twitter API -- may not work as-is)
- Program a Physical Object
- Artists Experimenting with PicoBoard and Physical Sensors to create new joysticks/mice/input devices (esp. 0:59+ -- Easy.)
- 10 Great Arduino Projects for Beginners (especially the Mood Light and Ambilight) (Intermediate.)
- A Glowing LED Cube that Visualizes any Data From the Web (Hard.)
- A Light that Looks Up the Weather Report on the Internet and Changes Color to Indicate It Will Rain (Hard.)
Help Your Classmates
If you find an excellent resource online that helped you with this assignment, share it with the instructors so that it can be added here for future students!
Always. Be. Shipping. Note that the final project and its associated reflection paper cannot be revised to improve the grade because it will be the end of the semester!