Project 11: Final Project
The purpose of this project is to give you a chance to design your own project. Keep your idea simple and focus on good execution and making use of what you have learned this semester.
Your project needs to incorporate the following concepts. Otherwise, you are free to follow your interests.
- It should make use of classes to encapsulate the code that handles sensors, motors, and outputs.
- It should use state machines to manage sequential processes or interactions.
- It should use at least two different sensors.
- It should use at least one motor (any of them are fine.
- It should use at least one output modality (lights, LCD, sound)
Your project does not need to be disconnected from its host computer. But if the connection is not a required part of the system, it increases the cool factor if you don't have to have it plugged in.
Your report should include a still picture of your setup. You should also submit at least one video of your project in action.
Follow-up Questions
- How closely did your implementation match your design?
- Why are comments useful/important in coding?
- What was the most challenging CS concept you encountered during the semester?
- What was your favorite project of the semester?
Extensions
The concept of an extension doesn't apply to this project. The final project will be graded using 25 points for the project and 5 points for the report. 2 points of the 25 will be for good comments and coding style.
Report
Each week you will write a brief report about your project. In general, your intended audience for your write-up is your peers not in the class. From week to week you can assume your audience has read your prior reports. Your wiki report should explain to friends what you accomplished in this project and to give them a sense of how you did it.
Your project report should contain the following elements.
- Abstract: a brief summary (200 words or less) of
the task, in your own words. give the reader context and
identify the key purpose(s) of the project. You can assume the
reader has read your prior assignments.
Writing an effective abstract is an important skill. Consider the following questions while writing it.
- Does it describe the CS concepts of the project (e.g. writing loops and conditionals)?
- Does it describe the specific project application (e.g. creating applications with the LCD)?
- Does it describe your the solution or how it was developed (e.g. what code did you write/circuits did you build)?
- Does it describe the results or outputs (e.g. did your code and circuit work as expected)?
- Is it concise?
- Are all of the terms well-defined?
- Does it read logically and in the proper order?
- A description of your solution to the tasks. This should be a description of the form and functionality of your final code and the design of your breadboard circuits. Try to describe your algorithm or code without including actual code in your report. Using 1-2 lines as an example is acceptable. Using simple diagrams or pictures of your board may be helpful when describing your circuits. Note any unique computational solutions or hardware circuits you developed.
- A description of any extensions you undertook, including images, videos, or diagrams demonstrating those extensions. If you added any functions, or other design components, note their structure and the algorithms you used.
- The answers to any follow-up questions.
- A brief description (1-3 sentences) of what you learned.
- A list of people you worked with, including TAs, and professors. Include in that list anyone whose code you may have seen, such as those of friends who have taken the course in a previous semester.
- Don't forget to label your writeup so that it is easy for others to find. For this lab, use cs153f18project11
Handin
Mount the Courses volume. Navigate to the Private sub-directory. Create a new folder called project01. (It's best to avoid spces in the directory name.) Each week, the following items should be submitted here.
- Code that should graded and any required supporting materials. This week, submit your code from all of the project tasks. Code from lab exercises will generally not be graded unless it is used as part of the project tasks (e.g. the Sensor class).
- Videos of your work. You can also submit videos as part of your report on the wiki, but please put a copy of the video here.
Your report should be submitted as a wiki page with the appropriate label, as noted above.