Skip to main content

Team Structure

Professional roles and responsibilities that prepare students for successful careers

Client-Driven Software Development

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. They validate that development teams have built the right solution and verify that it meets or exceeds their quality expectations.

Development Team Roles

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

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 and project management
  • 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.

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.

Academic Support Structure

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. This ensures our experiential learning program maintains academic rigor while preparing students for successful careers in software development.

Career Progression Pathways

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.

Team Dynamics

Collaborative Excellence

Our multi-role structure ensures students experience authentic professional dynamics while receiving appropriate support and mentorship at every level.

Real Responsibility

Students work as professional developers with meaningful accountability to clients, teammates, and product quality standards.

Supported Growth

Faculty oversight and near-peer mentorship provide safety nets that allow students to take on challenging work while learning from mistakes in a supportive environment.


Next: Discover the Student Experience → and how developers grow through this comprehensive program.

Related: Learn about How It Works → to understand our development process.