User:Kevin.buffardi

From TeachingOpenSource

Kevin is an Assistant Professor of Computer Science at California State University, Chico (aka "Chico State") where he teaches Software Engineering and Usability Engineering. He integrates FOSS projects into assignments for his students and is researching the impact of fostering a collaboration between students and local software professionals through FOSS. He co-founded the Chico Open Source Consortium (COSC), which is developing Bossy UI, a framework of data-driven web components.


FOSS Class Activities

Initial ideas:

1. Fixing bugs - A lot of existing projects already have knowledge of bugs that need to be fixed. This is an important aspect of software maintenance that would be valuable for my Software Engineering class (a higher-level undergraduate course in the computer science major).

2. Extending features - Likewise, many projects have feature lists that they would like to implement but have not had the resources to do so yet. My Software Engineering students could tackle adding new features which would help their understanding and appreciation of designing/developing for extensibility. Although not always considered "features," my students could also contribute unit tests to help exercise FOSS projects and expose existing faults.

3. User Experience Research and Design - I also teach an interdisciplinary course in Usability Engineering that concentrates on following user-centered design principles to improve human-computer interaction. This class involves semester-long projects where students could evaluate, redesign, user test, and suggest & document user interface design improvements.

HFOSS Detailed Activities

1. Software Engineering Projects - teams (of 4-7) students will sign up to contribute to an HFOSS project. Pre-requisite knowledge will include learning frameworks and languages since my students mostly have only worked in C/C++ (and of the community projects, these are not used). However, the students are Junior/Senior-level so they will use online resources/tutorials/references to being learning the basics at the beginning of the semester as "knowledge acquisition" phase of software development. During this time, the students will need to get in touch with active members of their HFOSS projects' teams and communicate about areas of need and realistic scope that can be expected for the course of the semester. As their instructor, I will help students set realistic expectations. However, some synchronization will need to take place before the beginning of the semester to get initial contact with the team members and making sure they can give occasional feedback to the students. The software engineering students will work in Agile Development methods, performing weekly "sprints" to make incremental contributions to their projects, including committing to GitHub (or respective host) repositories. Students will be graded on the maintainability and extensibility of their code as well as their ability to collaborate as a team and communicate both with the project community, and explaining it's purpose to a general population. The biggest challenge or stumbling block will be making sure that the students are meeting/communicating regularly with the HFOSS team. With some vetting before the semester, I hope to minimize those risks.

2. Usability Engineering Projects - teams (of 4-7) students will sign up to contribute to the design/redesign of the user experience of an HFOSS project. These projects will work similarly (and have similar risks) as the aforementioned project, however, instead of focusing on programming, the teams will evaluate and redesign the user interaction with HFOSS software by following User-Centered Design practices. As an product of their projects, the students can provide design recommendations for the user interface, along with an interactive prototype to demonstrate the interaction (from the user's perspective). Usability Engineering projects can work more independently than Software Engineering projects since they will not be producing code. Instead, their contributions will be to help improve how usable the software is. HFOSS projects that are best suited for Usability Engineering are ones that have significant user interfaces, such as web or mobile applications.