Final Project Proposal


For the final project for CIS 193, you need to dig into a Go project to demonstrate what you have learned this semester. You have a lot of flexibility and can work individually or in groups of 2. To find a partner, feel free to use the Search for Teammates feature in Piazza.

This week, you need to prepare a proposal for your project idea. These ideas should require substantial effort. If you have trouble estimating this yourself, check beforehand on Piazza.

Project Ideas

Below is a list of suggested ideas to get you started. Many of these ideas will require customization and are not enough on their own to be a full final project. You are of course encouraged to come up with your own ideas and are not restricted to ideas on this list.

Build a tool you find useful

Go is incredibly productive for building tools, and is in fact the motivation of the creators of Go.

  • Manage your data: photos, music, videos, etc
  • Framework for managing coursework or job search
  • Calendar or todo list notification tool
  • Package manager for a programming language or another field
  • Build automation tool (like Make or gradle)
  • Dropbox-like backup tool

Create a package

Go is still a relatively new language, so there are libraries for most things but not everything. Writing a brand new package to contribute to the community is one of the best ways to demonstrate your Go knowledge.

  • Linear algebra
  • Statistics
  • Bioinformatics
  • API wrapper
  • Machine learning
  • Natural Language Processing (NLP)
  • System administration

Contribute to an open source project

Go has a huge community of open source development, and the language itself is open source. You can browse for projects on GitHub.

  • Add a feature
  • Fix a bug that has been reported in the issue tracker
  • Add documentation, examples, a tutorial, etc.
  • Compile a release for various platforms

Your contribution must be substantial in some way as before.


Your project proposal should outline your ideas and goals for the project, and should be about 300 words. Your proposal should generally answer:

  • What kind of project are you proposing?
  • What do you hope to learn or gain from the project?
  • What are your concrete goals or milestones? How will we judge the completeness and success of your project?
  • If you’re contributing to an open source project, what issues are you addressing? What features are you implementing?

You should also prepare a general outline of your implementation plan. These technical questions may include:

  • What libraries will you use?
  • What will the interface look like (if applicable)? This includes a GUI, CLI, or programmatic (API) interface depending on your type of project.

Please include any other relevant information if relevant to understanding your project.


The final project will be graded upon 5 criteria:

  • (15%) Project Proposal: Your proposal should be on time, answer important questions about the project and your planning for it, and show evidence of research and preparation.
  • (20%) Style: Your project should use good code style, idiomatic Go usage patterns, and be properly documented. Don’t forget gofmt!
  • (20%) Correctness: Your project should be free of bugs or errors and correctly accomplish what it is meant to achieve.
  • (30%) Accomplishment: Your project should demonstrate about ~10-15 hours of effort per person and learning outside of class. Be sure to highlight what you have learned and where you have spent your time and effort, even if it does not make it into the final product.
  • (15%) Presentation: Your presentation on the last day of class should be about 5-10 minutes long and demonstrate your project and touch on your experience. You should also be ready to demonstrate your code implementation.


You should submit your final project proposal to Canvas when you are done. Your proposal will be a part of your final project grade.

If you have any questions about your proposal or the project scope beforehand, feel free to ask on Piazza or via email.