Final Project (100 pts)
Choose a problem to solve using Python programs.
You will work in teams of 2-3 students.
Your group will present the problem, your coded solution, and your results.
This project will be completed in stages. It consists of:
- [15] Project proposal
- [15] Intermediate results
- [30] Source code
- [30] Presentation
- [10] Peer grade
Project proposal
Each team will submit a 2-4 page (single-spaced 12pt font) document to Moodle which contains the following:
- the title of your project,
- the name of all team members,
- 3 paragraph description of what your final project will look like once complete,
- labeled answers to the communication and planning questions below, and
- the approval of a ZI/TA.
In the description of your final project, be as detailed and specific as possible. It should provide a clear understanding of your project idea. As best as you can, describe what approach you would take (i.e., use a list to store an inventory of items, use turtle library to draw a picture, use for loop to read input from the user, etc.). It’s okay if there are some aspects for which you don’t know what approach you would take, as this will be part of the exploration step of your project implementation. However, in this case, be very clear in the description exactly which part(s) you expect the most challenges with and what resources you will use to overcome them (e.g., chapters from the book, a link to documentation, ideas for potential modules you could use, etc.).
Communication is important. Be specific and clear with your expectations of your group members. Any ambiguity or lack of communication between team members can lead to difficulty in completing the final project, and trouble among team members. The ability to collaborate within a team is an important life skill which you will apply frequently in other classes and post-graduation.
Discuss the following communication and planning questions with your team, and include your responses in the project proposal.
- What are your individual strengths and weaknesses?
- Consider your previous experience with team projects (in previous classes, high school, volunteer work, etc.). Reflect on how those collaborations turned out, with attention to what went well and what needed improvement. What specific steps can you can take to improve your collaborations for this project?
- What steps will you take to ensure that no individual person is left carrying the weight of the entire project?
- What steps will you take to ensure that no individual person is left confused, lost, and unsure of how to proceed?
- What steps will you take to ensure that each individual’s ideas are heard and respected, without any other team member dominating the conversation?
- How will you communicate outside of class? I suggest exchanging phone numbers and/or email addresses.
- What date/times will you meet outside of class? I suggest meeting 1 time per week before spring break, and 2 times per week after spring break. You will spend more time individually working on your own contribution to the project. This allows you to identify problems early and check-in frequently.
- How will the work be fairly distributed among team members?
- What is the procedure for any team member to follow if there are questions or concerns?
Go to office hours to review your project proposal with a TA or ZI before submitting.
Share with the class the current state of your project. It should run and produce some output, but it doesn’t need to be complete.
Source code
Submit your software in Moodle. Keep it well organized, use functions, and document your code using comments. Part of the code must be written by you - not just code from the textbook or from another source. If you use a resource you must cite it! Otherwise, it is plagiarism and will result in an F. Your source code should have:
- Comments with names of all team members at the top of the file
- One paragraph (5-6 sentences) per team member describing their main contribution in comments
- Comments at the top of each function
- Several functions (at least 3, but you will likely have more)
- Good use of variables and choice of variable names
- Conditional statements (if, for, while)
Presentation
Powerpoint slides presented in class (~10 minutes per team) and submitted to Moodle. Slides should be clear, uncluttered, readable, informative, and contain slide numbers. Your presentation will include:
- 1 slide: title, team names, class with semester/year
- 1-2 slides: present the problem / goal of your project
- 1-2 slides: present the solution (e.g., bullet point of ideas, diagram, function names and descriptions). Be clear what each team member’s main contribution is.
- 1-2 slides: results (e.g., pictures, graphs, numbers)
- Conclude with a live demo of your software
Peer grade
Feedback from your peers on your project/presentation and the quality of feedback that you provide your peers.
Grading
You will be graded on the above criteria as well as:
- Timely and correct submissions
- Working software - I should be able to run it successfully
- Originality - there should be some original code apart from possible start up code from the book/internet
- Grammar, content, formatting, correct citations, presentation, collaboration
- The amount of individual contribution you made to your team’s efforts, as determined by self-reflection and your team.
Ideas
You are free to solve any problem, but here are some possible ideas with corresponding details on where you can look to get started. I encourage exploration of other python modules and of chapters that we haven’t covered.
- Turtle application (ch 1)
- Fractals (ch 9)
- Create a menu that asks you to draw sierpinsky triangle, rectangle, square, etc.
- Use recursion to create snowflakes, ferns-like shapes, or other interesting patterns
- Solar system (ch 10)
- Make it to be a real solar system
- Add a moon to the earth
- Image processing (ch 6)
- Create an image/landscape using cImage.py class
- Import an image of yourself and change its background
- Extend edge detection
- Flip the image
- Encryption/Decryption application (ch 3 and ch 8)
- Use regular expressions to crack a code or find genes in DNA string
- Implement other encryption/decryption algorithm that is not in the textbook
- Steganography (encode messages in a picture)
- Compute and plot some statistics for data downloaded from the web (ch 4)
- Data mining, clustring (ch 7)
- Predator-prey simulation (ch 11)
- Video game (ch 13)
- Ex: Rock, paper, scissors game (use TKinter to draw 3 corresponding buttons)
- Lottery ticket simulation
- Blackjack, poker, tic-tac-toe
- Hangman (use cImage to draw head/neck/etc)
Additional References
- The Python Standard Library, which includes many other packages that can be imported and used. No installation is required. For example,
tkinter
provides a graphical user interface,
- Turtle
Projects from previous years
Here is a sample of projects from 2020.
Previous years also included:
Games - battleship, blockout, hangman, space invaders
Encryption with images (image contains a secret message embedded within the pixel differences)
Image processing
Landscapes
Images created by recursive functions
Solar system
Charts / visualizations