Mhills FOSS in Courses 1 Notes
The course I selected is our software engineering course (Software Engineering I) that we teach at the undergraduate level.
Based on what I've read so far, the following activities seem interesting:
- Code walkthroughs, especially around bugs or explaining specific features. This would help the students to start looking into how the code works, give them perspective on how larger systems are structured, and give them practice with code reviewing and the kinds of practices they would need to use during software maintenance/evolution activites
- Model/document extraction. This wasn't mentioned explicitly (at least not the model part, documentation was mentioned), but this would help them again to understand how the software is structured, would give them practice with using UML modeling tools, and would also give them practice with producing useful documentation for an existing project. This may or may not be something that could be contributed back to the project itself.
- Adding tests: This is "safer" than modifying system code, since they cannot break existing functionality, and adding tests is a useful practice that they should learn for their own software. This also gives them practice at understanding code, and (if these are black box tests, although white box are more likely) understanding definitions of program behavior that are not given in code. These could be contributed to the project.
- Bug fixing: This would be more advanced since it is actually modifying the main code base. I'm not sure I would do this in our undergrad class, but this could be done, in which case adding tests for regressions would also be part of this. This would most likely be contributed back.
- Joining mailing lists/online discussion groups: This could be interesting to the students, since this would help them to learn more about the project and to see how developers discuss technical issues/enhancements for the project.