Learning professional software development skills by contributing to Open Source projects
This Innovative Practice Full Paper describes Open Development, a Software Engineering advanced course that focuses on building practical development skills by contributing to Free/Libre and Open Source Software (FLOSS). Software Engineering is a broad area that spans many different topics, such as testing, software quality and development methodologies. Typically, entire courses are developed to explore each topic in depth. However, effective participation in real software projects requires the simultaneous application of a wide range of skills and focusing exclusively on each skill one at a time may not be sufficient for students to be able to apply them all in sync. Participation in FLOSS projects offers a unique opportunity to obtain and develop such skills, as many projects follow industry best practices for all contributions and provide documentation to help new contributors.We present the Open Development’s design in alignment to Student Centered Learning and the GAPA (Goals, Activities, Projects, Assessment) framework. We also analyze student contributions from the last three offerings (N=50), studying characteristics such as type of contribution (test, bug fix or new feature), complexity of the code, approval ratio and project size. The design and outcomes of the course are validated by examining Student Evaluations conducted by the institution’s Teaching and Learning Office. Students from all offerings (N=34) strongly agree that "This course’s contents will help me in a future job or internship". Combined with accepted contributions to well-known projects such as Pandas, Matplotlib and Pygame, we conclude that Open Development fulfils the objective of providing practical software development skills.