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:

Project proposal

Each team will submit a 2-4 page (single-spaced 12pt font) document to Moodle which contains the following:

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.

  1. What are your individual strengths and weaknesses?
  2. 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?
  3. What steps will you take to ensure that no individual person is left carrying the weight of the entire project?
  4. What steps will you take to ensure that no individual person is left confused, lost, and unsure of how to proceed?
  5. What steps will you take to ensure that each individual’s ideas are heard and respected, without any other team member dominating the conversation?
  6. How will you communicate outside of class? I suggest exchanging phone numbers and/or email addresses.
  7. 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.
  8. How will the work be fairly distributed among team members?
  9. 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.

Intermediate results

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:

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:

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:

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.

Additional References

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