The team project is a major component of this course and is designed to guide students toward meeting several course, departmental, and college-level learning goals.:
- Students will create a prototype of an interactive web-based app for a local, non-profit organization, using the Ruby on Rails framework. (During the pandemic, we will incorporate more projects developed for departments and faculty of Grinnell College than normal and gradually return to development of projects for the local community as public health and co-location of students on campus allow. )
- Students will develop software in a collaborative, team-based project
- Students will apply an Agile software development methodology to the creation of their prototype software
Over the past 5+ years, the student teams have developed web-based apps for a number of local non-profit organizations. Some of those were featured at a recent Teaching with Technology Faculty Friday discussion: Learning by Doing: Software Design and Development
Some past (and current projects) include the following (most are on staging servers and may take a moment to load):
- Computer Science Email Archive
- Giving Gardens
- Greater Poweshiek Community Foundation Grant Management System
- Greater Poweshiek Community Foundation Volunteer Board
- Grinnell College Assessment
- Invisible Closet
- LGBT Oral Histories of Central Iowa
- Local Foods Connection Food Search
- Mayflower Dining
- Mayflower Directory (password protected)
- Mothers on the Front Line
- Poweshiek Food Pantry
Community Partners, Projects, and Alumni Mentors
Community Partners (F1)
- Grinnell College departments
- Funding sources for students (Center for Careers, Life, and Service)
- Computer Science Anti-Racism Resources Library
- Interactive community engaged learning toolkit (Mellon Community Engaged Learning)
- Prototype graduates outcomes data analysis and data visualization dashboard (STEM Career Community)
- Wes Beery
- Alex Leach
- Cassie Koomjian
- Terian Koscik
- Ian Young
Step 1) Getting Assigned to a Project Team
Early in the term, we will have an overview of the possible projects available for your class section. You will then rank your preferences in the Team Assignment Survey.
Over the weekend, your instructor will form teams, trying to give every student their first or second choice of team (which usually is possible …..). Teams will be announced on the Monday following submission of surveys.
Step 2) Meeting with Your Community Partner
Generally, your first meeting would be done face to face, and this was often done at the community partner’s place of business. For Fall 1, we will need to be flexible and assume that you will probably need to use video conferencing for all of your meetings, even the first one. TRY to arrange this meeting to include the whole team at this initial meeting. Subsequent meetings do not need to involve everyone.
After this meeting, you should draft your Memo of Understanding that describes the planned development work for the term. Have your community partner read your draft and suggest edits as needed. You will submit the memo in PioneerWeb
Step 3) Coding and Development
Take a moment to review the Safety and Security Document. It is essential that you protect API keys and any real data from exposure to the outside world.
Since we use GitHub for all of the project repos, it is convenient to use GitHub project management features to manage your team’s task list. You can either use GitHub Project or manage task lists on Issues. Alternatively, Trello has also been very popular, and Microsoft Teams or OneDrive may have resources to help keep your team organized.
Step 4) Reporting to “Management”
Part of your development as software developers is to work on communication not only with your community partners and team mates but also with management in the form of plans, presentations, and reports. For this class, your instructor gets to stand in as upper-level management.
Step 5) Final Evaluations
Each team will give a final presentation. Unless you make prior arrangements, each student must be (virtually) present during the presentation.
This presentation is given to the class, your community partners, and possibly the computer science department. This is intended to be focused on the product you have produced, with a high level discussion of what features the team implemented during the term. This usually happens during the scheduled final.
You will also evaluate yourself and your team members regarding how well you worked as a team. Your alumni mentor and your community partner are also asked to give general feedback about how well the team worked with them and how you contributed to the project’s (which includes documentation and testing suite) final prototype. Your community partner also will evaluate your team’s prototype, understanding that it is not expected that you will finish the project by the end of this term.
Grading this project is particularly challenging for a variety of reasons. Each project is substantially different from the others, and it is almost impossible to establish objective criteria against which to rate successful completion. Also, each project depends to a large extent on the participation of your community partner(s), who are an important – but ungraded – part of your development team. Finally, while most teams have worked together smoothly, there is always the potential for friction, unexpected illnesses, and becoming overwhelmed by the demands of other classes. Hence, the team project is graded on the philosophy “Process Over Product!”
In practical terms, this grading philosophy for the team project means that most of the points in the team project category hang on your team’s work throughout the term: the team’s charter, memo of understanding, demos, reports, and final presentation.
Several end-of-course evaluations by your team members, the community partner, and your alumni mentor also count in this category. At the end, I ask your community partners if they were pleased with your progress and if your interactions with them were professional. I also consider how much progress the team made during this term, but this is not always measured in the amount of code that you write or how well the prototype works. Substantial work with a community partner to establish requirements for a new app, a substantial reworking of an existing project, or writing a missing test suite all might be considered an “A” project. This is a case in which gaining experience is the main point. I think once you get started on the project, intrinsic motivation will take over. You will do a great job; do not stress over the grade!