Final Project
The goal of the final project is to give students in-depth knowledge of one tool. Besides the technological aspects, completing a successful project also requires effective written and oral communication skills. During the process, you should develop skills and processes for how you will approach learning and evaluating new tools.
Deliverable 0: Tool Preferences
Email me with your top three preferences in tools to explore, and I will arrange you into teams to explore the tool by Wednesday, March 22 at 11:15 a.m.
The tools you can choose from are
- Firebase - tools for mobile applications, specifically analytics
- Flask - a Python microframework for web applications.
- GraphQL - query language for APIs
- Hubot - automate company chats
- JMeter - performance testing tools
- Mocha - JavaScript (frontend) testing framework
- React - JavaScript library for making user interfaces
Deadline: Wednesday, March 22 at 11:15 a.m.
Deliverable 1: Preliminary Tool Exploration
- Explore the tool with your team. Find relevant documentation, blog posts, etc. about the tool.
- Organize your team. The following questions are meant to
help you think about how to organize your team for success.
- What are the tasks?
- How will you divide labor?
- How will you collaborate? What tools will you use?
- What are the team's deadlines?
- Let me know what you need installed on
carl
. Provide links and as much info as possible so that I can get it set up. We may need to meet and do the installation together.
Email me with the above information, with all team members included in the email.
Deadline: Wednesday, March 29.
Deliverable 2: Presentation
The presentation should demonstrate that your team knows the tool well, that you have digested the jargon, and understand the strengths and limitations of the tools. The presentation should be well-organized and accompanied by appropriate visual aids. Be clear in your delivery and remember that the rest of the class does not know the tool nearly as well as you do.
Presentation Requirements
- 25-minute presentation; 20 minutes of presentation, allowing 5 minutes for questions.
- All team members must speak for approximately the same amount of time.
- Content:
- Problem tool solves, motivation
- What are the tools goals? non-goals?
- How does tool work? (Design/architecture of tool.)
- What do you need to use the tool? What does it depend on?
- Demonstration of the tool, including typical use cases
- What are the strengths and limitations of the tool?
- What are the opportunities for the tool? What does the tool work with? How can you extend the tool?
- What are the competitors/alternatives to the tool? How do they compare?
The presentation will also give the rest of the class the opportunity to ask questions that will help inform the remaining deliverables.
Due: Last week of classes
Deliverable 3: Wiki Page
Create a page on the wiki that explains the tool.
Wiki Content
- Summarize the tool and the motivation for the tool, its goals. (Why does someone care about this tool?)
- Links to tool, documentation, good tutorials, other good sites.
- Link to the slides from your presentation.
- Other helpful notes, information
Due: Wednesday of Finals Week
Deliverable 4: Analyses
Finally, you will provide a written analysis of the tool as well an evaluation of your team and an individual reflection.
Tool Analysis
Write a final assessment of the tool. I want to hear your take on the tool. This will have some content similar to other deliverables, but should have some unique analysis that brings together your experience with the tool.
Summary/Introduction: Summarize the tool to remind yourself later about the tool's purpose, goals, and typical use.
Quantitative analysis: Assign a letter grade for the following aspects of the tool. Provide a justification for your grade.
- Documentation quality (e.g., how easy to get started from the official documentation, examples)
- User-friendliness (after you have installed the tool, how easy is it to do what you want it to do?)
- Community support (how much community support does the tool have? Some indicators: number of web pages/blogs/tutorials, number of open-source extensions, active mailing list, ...)
- Productivity gains (how much does it help the developer/application?)
- Integration with other tools (specify which tools you're integrating with)
Are there other quantitative measures you'd like to add? Please do!
Qualitative analysis: Consider if you were the technical manager for a project in which the tool is relevant. Would you recommend that your team adopts the tool? Consider and address the following questions (when relevant) to guide your answer and add more, as appropriate:
- What are the strengths and limitations of the tool?
- Would you recommend this tool over the alternatives (including not using a tool)? Include a cost-benefit analysis/tradeoffs of using the tool.
- What if you are starting a new project versus restructuring/refactoring a project?
- What if the team is small vs large?
- What other factors would impact your recommendation?
Final Thoughts:
- Future work: what else did you want to explore but time constraints didn't allow?
- Conclusions
Save as a PDF document, named
as lastname_analysis.pdf
.
Team Assessment
Describe how your team worked together. Specifically, I am interesting in learning:
- how you organized the team, how you collaborated/coordinated, and how you divided up tasks among the team
- who was responsible for what (preparation, organization, creating slides, technical expertise, finding resources, managing the team's efforts, writing, ...)
- the percent (out of 100%) of the project work, including all tasks above, that you believe each team member performed.
- What went well? What would you do the same? What would you try to do differently?
Save as a PDF document as lastname_team.pdf
.
Individual Reflection
Throughout this process (including reviewing your classmates' presentations), you should be developing your approach to exploring and evaluating new tools. Describe your approach, addressing at least the following questions:
- How do you learn about a tool? What are your steps? What did you do that was successful? What was not successful?
- What do you look for in a tool? What are your criteria in evaluating a tool? What are the most important criteria? How do you assess the tool?
- What can tool developers do to convince you that you should adopt their tool?
- What is your confidence in being able to learn a new tool? What would improve your confidence?
- What are your biggest takeaways from the course/the experience?
Save as a PDF document, named as lastname.pdf
Email me the PDFs.
Due: End of
Finals
Grading Breakdown
While most of the deliverables are graded as a team, if a team member is not contributing to the team's efforts, the individual may not receive the same grade as the rest of the team.
- (Individual) Tool Preferences: 2%
- Preliminary Tool Exploration: 4%
- Presentation: 49%
- Wiki page: 15%
- (Individual) Analyses: 30%