Models for Student Learning withing H/FOSS Communities

There are multiple models for student  learning within H/FOSS communities within an academic environment. These models range from introductory exercises to full courses. 

Incorporate Activities into Existing Course

Course length: One semester or term

Student background: Varies from novice to advanced

Instructor background: Varies from novice to advanced

Approach: Instructors include one or more learning materials into an existing course. Some example learning activities include:

  • Create a blog and reflect on learning as part of a CS0 or CS1 course
  • Write a paper on the history of a FOSS person
  • Do a User Interface evalatuion of an open source project
  • Do a security evaluation of an open source project

Comments: Search for materials under the Introduction FOSS category. 

Introductory Course

Course length: One semester or term

Student background: Students are assumed to be freshman or sophomores and may be non-majors. Students are assumed to enter the course with little or no computing background.

Instructor background: Instructor may have little or much software engineering experience.

Approach: The goal of this approach is two-fold: To familiarize students with the open source software world and to introduce students to basic programming concepts. Topics covered include:

  • The Open Source movement
  • History and background of OSS
  • The humanitarian potential of OSS
  • Sequential programming
  • Decisions and loops in programming
  • Functions and arrays
  • Use of source code control systems and databases

This course is intended to engage student interest by exposing students to humanitarian OSS. Readings include articles like “The Cathedral and the Bazaar” and “The GNU Manifesto”. Emphasis is on understanding the role of humanitarian OSS while exposing students to introductory computing concepts.

Comments: The challenge of this approach is finding the balance between OSS and computing concepts.

Single Software Engineering Course (Novice)

Course length: One semester or term.

Student background: Students are assumed to be juniors or seniors in a computer science program. Students are assumed to have taken CS1, CS2 and a data structures course.

Instructor background: Instructor is a computer science professor who may not be familiar with software engineering.

Approach: Employ two iterations of a requirements-design-implement-test cycle within the semester. The first cycle uses a known and well-understood project, not necessarily open source. The second cycle has students make a small modification to a humanitarian FOSS project. . A small set of deliverables (requirements document, design document, implementation, test documentation) are used and no reviews are used. Tools such as source code management, IDEs, and databases are used. Comments: The use of two cycles allows both the instructor and the student to become familiar with a pared-down software lifecycle. The idea is that students will learn the lifecycle and expectations for deliverables during the first cycle, ameliorating the learning curve when they work on the humanitarian FOSS project for the second iteration of the lifecycle.

Single Software Engineering Course (Experienced)

Course length: One semester or term.

Student background: Students are assumed to be juniors or seniors in a computer science program. Students are assumed to have taken CS1, CS2 and a data structures course.

Instructor background: Instructor has software engineering experience and has taught software engineering courses in the past.

Approach: Employ one iteration of a launch-requirements-review-design-review-implement-test-document cycle within the semester. Tools such as source code management, IDEs, and databases are used.

Comments: As instructors become more experienced, a somewhat more document-heavy process may be employed. This approach uses a more complete set of deliverables than the Novice approach and incorporates reviews as well.

Capstone Process

Course length: Two or three semesters or terms.

Student background: Students are assumed to be seniors with extensive background in software development.

Instructor background: Instructor has software engineering background and has taught software engineering courses in the past.

Approach: Employ one or more iterations of a launch-requirements-review-design-review-implement-test-document cycle within or across the terms or semesters. Tools such as source code management, IDEs, and databases are used. Comments: The use of multiple terms or semesters combined with multiple iterations allows students to become very familiar with the project. This approach also has the potential to support enduring relationships between students and humanitarian FOSS organizations.

Comments: