Team Structure
Giving students experience as developers requires building real software that solves actual problems for real people. We engage with clients who have specific needs, placing them at the heart of our software development teams. Clients drive project decisions about what gets built and what takes priority, validate that development teams have built the right solution, and verify that it meets or exceeds their quality expectations.
Capstone Teams
Each product team is staffed with a small group of undergraduate students working as software engineers, enrolled in the Computer Science Capstone course. Teams vary in size from three to five engineers.
Each week these developers deliver continuous improvements to their product, gaining hands-on experience while delivering value for their clients. The capstone course carries 2 credits, requiring each developer to contribute at least 8 hours weekly (2 hours in class, 6 hours outside of class).
Near-Peer Leadership (Tech Leads)
Each product team is led by a graduate student serving as Tech Lead. The Tech Lead guides students in their software engineering roles, coordinates with clients, and serves as the product maintainer.
They enroll in a graduate course called Developing Open Source Software Products, scheduled to ensure they can meet with their teams and receive structured support for their leadership role. Beyond working with product teams, the course provides supplementary material on:
- Managing team dynamics
- Building open source communities
- Effective software engineering practices
- Product stewardship and delivery
- General leadership abilities
This role is limited to graduate students who have demonstrated leadership potential through prior professional or academic work, with a minimum commitment of 12 hours weekly.
Sponsored Developers
Projects with financial sponsorship can hire a dedicated undergraduate or graduate developer for up to 20 hours per week during the semester or 40 hours during breaks. Staff developers are also available for up to 40 hours weekly.
Sponsored developers are selected from current product teams. To ensure clear separation, students may only work for pay on products different from those they're working on for course credit.
Experience shows that hiring a dedicated developer ensures key deadlines are met and enables the entire product team to work more effectively and efficiently.
Industry Fellows
Seasoned industry professionals are paired with product teams through our Industry Fellows Program. Fellows work primarily with graduate Tech Leads while also providing guidance to undergraduate developers. Their engagement includes regular online check-ins, code reviews, and technical guidance alongside a minimum of two on-site mentoring events per semester.
Fellows bring real-world perspective on architecture decisions, development practices, and career navigation. Multi-semester partnerships allow for deep, ongoing professional development on both sides.
Faculty Support
Faculty members play a crucial role in our experiential learning ecosystem by serving as academic advisors and industry liaisons for students working as developers.
Computer Science faculty provide structured oversight for both undergraduate capstone teams and graduate Tech Lead courses, ensuring that learning objectives align with professional software development practices. They meet weekly with product teams and Tech Leads to provide technical guidance and connect classroom theory with real-world implementation challenges.
Beyond direct project oversight, faculty contribute to curriculum development and help identify potential clients from their research networks and professional connections.
Career Progression
Development Path: Students can progress from capstone team members to sponsored developers, gaining increasing responsibility and compensation while building deeper technical expertise.
Leadership Path: Outstanding undergraduate developers may advance to Tech Lead roles as graduate students, developing management and mentorship skills alongside technical growth.
Professional Transition: All roles provide direct pathways to industry positions, with graduates entering the workforce as experienced developers rather than entry-level programmers.
Next: Discover the Student Experience and how developers grow through this program.
Related: Learn about How It Works to understand our development process.