Final Project Instructions
Note: Any external resources and/or AI tools used in the development of your final project must be clearly cited/acknowledged in your submission.
Project Description
You are tasked with creating a comprehensive data solution and accompanying report for a professional sports organization. This tool will comprise analytics models and metrics that inform critical operations decisions and answer a specific question from one or more of the following categories:
- Talent evaluation
- Player development
- Strategic decision making
- Player acquisition strategy
- Personnel decisions
- Optimizing roster value
- Maximizing player performance
- Player evaluation
- Prospect assessment
- Trade analysis
- Roster construction
- Asset valuation
- On-field strategy
Please read the entirety of this document carefully for details on how to prepare the project.
Part 1
After you select your topic, please prepare a 1-page proposal outlining (with sufficient detail) how you plan to implement each phase of the data science workflow:
Question of interest and relevance to chosen category
Import
Tidy
Transform
Visualize
Model
Communicate
This is to be submitted via Crowdmark by Monday, July 14 at 11 AM ET.
You are encouraged to take advantage of office hours to discuss project ideas or clarify questions.
Part 2
There are three deliverables required:
The first is a project report, which is to be written using Quarto Books and published via GitHub Pages.
The second is a Shiny web application for your data solution, deployed using shinyapps.io.
The third is the complete source code of the project, which is to be uploaded as a repository on GitHub, with an invitation sent to add David as a collaborator so that he can view the code. David’s GitHub handle is
awosoga.
The URL links to the first two deliverables are to be emailed to samuel.wong@uwaterloo.ca (cc david.awosoga@uwaterloo.ca) by Monday, August 11 at 11:59 PM ET. David must be able to access your repository by this time as well. You will receive a response to confirm receipt of your submission.
Technical Requirements
Apply modeling techniques learned from previous courses, such as (but not limited to) machine learning, computer vision, simulation, optimization, and data visualization.
Perform validation, testing, and manual quality assurance before certifying new models and metrics for use, using meta-analytic criteria where possible
Apply correct programming habits such as extensively commented, well-organized, and thoroughly tested code, with version control utilized throughout the project.
Write a maintainable, performant, and scalable Shiny application, leveraging reactive programming and similar strong software engineering principles.
Deliverable Requirements
- Use a
.venvorrenvvirtual environment with appropriate workflows - Build a predictive model, and;
- Store the model in an AWS S3 bucket
- Interface with the model using a
vetiverAPI - Put the API in a Docker container
- Note: Don’t forget to add your AWS credentials to the
Dockerfile.
- Note: Don’t forget to add your AWS credentials to the
- Run the API from an AWS EC2 instance.
- Note: Although this is highly discouraged in practice, edit the inbound rules of the EC2 Security Group to add a custom TCP that accessible from any source (0.0.0.0/0) for the port that your API will be run through, so that it can be accessed by the shiny app without having to configure SSL/TLS and HTTPS.
- Use
requestsorhttr2to access predictions from this model from within your shiny web application - Use GitHub Actions to deploy your project report to GitHub Pages, scheduled on
pushandworkflow-dispatch - Store all data used in your web application and project report in AWS S3 and interface with it using
duckdb. - Proper use of environment variables/secrets management for AWS credentials, EC2 public IPv4 address, and other relevant information.
- Multiple levels of logging for user interactions and external API calls within the shiny web application.
- User-friendly front-end interface, with straightforward navigation and responsive components.
- Incorporate a variety of data visualizations using
ggplot,gt, and optionallyplotly
The content and labs from chapters 1-10 of DevOps for Data Science, lecture notes, and other assigned readings will be quite helpful in accomplishing these items.
Report Requirements
As this report will be submitted as a static webpage, there is no “page requirement”. Instead, the book should be divided into 7 “chapters”, one for each stage of the data science workflow, i.e., following your project proposal outline. Within each chapter, implementation details, justification of methods, relevant unit tests, and related code and figures should be included.
Report Structure: Use section headings and paragraphs to organize your ideas, so that points flow logically from one to the next, as you would when writing a paper. Tables and figures should be numbered, have descriptive captions, and be properly referred to within the text. An appendix can be used, for example, to explain how a user can navigate through your web application.
In your
index.qmdfile, please provide an ‘abstract’ of your deliverable introducing your dataset and describing how your data solution satisfies the criteria of practical significance, technical contribution, and data constraints.Feel free to take advantage of
code-foldingin order to improve the legibility of your submission.
References and citations: A proper .bib file with corresponding citations should be used for references and included in the report. Cite all original data sources (e.g., provide the URL to the source in your list of references). Any papers/books/websites that you used (e.g., for scientific background of the problem/data, method/analysis ideas, related work that inspired your project, etc.) should be cited appropriately in the text and included in your list of references. Plagiarized work (which includes using material from sources without citation) will receive a zero. The only exception is that references are not required for any material we already covered in class lectures.
Use of AI tools: If you use generative AI tools (e.g., ChatGPT) to help develop your project in any way, you must attach a link to the full log (i.e., the prompts and responses) as an appendix. If you used AI, failure to acknowledge its use will result in a grade of zero. If you are unsure as to whether any particular use of AI is acceptable or not for the project, please see me.
Notes
AWS EC2 and AWS S3 come with 12-month free tiers for new accounts, after which billing will be applied based on usage. You may deactivate all services related to this project after September 1, 2025 to avoid unexpected charges.
Grading
55 marks total:
5 for proposal
20 for report
30 for deliverable