Teaching Materials:

Material Type Title Overview Courses FOSS Area Tags Source
Version Control

This POGIL activity will introduce some of the challenges of sharing & managing source code, and some useful approaches & procedures. Understanding concepts makes it easier to understand the features and differences of specific tools later in the activity.
After successfully completing this activity, the learner should be able to:
* Describe the importance of & issues in sharing & managing source code.
* Describe the advantages & disadvantages of a version control system (VCS), and the key operations.
* Use at least one modern VCS to find, update, and create versioned files.

, Clif Kussmaul
Task Tracking

This POGIL activity explores ways to track tasks for a project with many people, and tasks that vary in importance, time, and skill required, and that may depend on each other. The activity focuses less on events that must occur at specific times (e.g. classes, meetings) and more on tasks that can be scheduled with some flexibility. Once you understand concepts, it is easier to learn about specific tools in the future.
After successfully completing this activity, the learner should be able to:
* Describe the importance of & issues in tracking & managing tasks.
* Describe the strengths & limitations of task tracking systems, and of their key operations.
* Use a modern task tracking system to find, update, and create tasks.

, Clif Kussmaul
Software Release Life Cycles

This POGIL activity explores how a software release changes over time as it is created, matures, and becomes obsolete. We call this the software release life cycle, because it parallels how animals are born, grow, mature, and die. This is different from (but related to) how the software is developed, which is the software development process or the software development life cycle (SDLC).
After successfully completing this activity, the learner should be able to:
* Describe major stages in the software release life cycle, including development, alpha, beta, support, and end-of-life.
* Describe some of the activities that occur in each stage.
* Describe some of the advantages & disadvantages of overlapping release cycles.

, , Clif Kussmaul
Software Development Life Cycles

This POGIL activity explores ways to organize 4 categories of activities (analysis, design, coding, testing) into a software development process or life cycle (SDLC). This parallels how an animal is born, matures, and dies.
After successfully completing this activity, the learner should be able to:
* Describe common SDLC models (WaterFall, Iterative, Spiral, Agile), and their advantages & disadvantages.

, Clif Kussmaul
Software Development Activities

For homework and other small programs, one person (or a small team) can do all of the work. However, this does not scale well to larger teams and projects. This POGIL activity explores some of the activities involved in software development.
After successfully completing this activity, the learner should be able to:
* Describe 4 categories of software development activities (analyze, design, construct, test).
* Describe common software development activities, and assign them to categories.
* Describe how and why productivity varies with project class and size.

, Clif Kussmaul
Story Point Estimation

This POGIL activity will help you learn about estimation techniques, and specifically story point estimation.
After successfully completing this activity, the learner should be able to:
* Explain the importance of estimation and associated challenges.
* Apply story point estimation to professional and personal projects.
* See difficulty of accurately estimating tasks in an unfamiliar domain.
* See value of focusing on relative difficulty, not absolute.
* See value of using experience to improve estimates over time.
* Evaluate the risks associated with tasks in a story point estimate.

, , , Clif Kussmaul
Project Scheduling

This POGIL activity will help you learn about project scheduling, including challenges & useful techniques. To do this, you will explore ways to estimate how long it will take to make a batch of cookies.
After successfully completing this activity, the learner should be able to:
* Explain what a Work Breakdown Structure (WBS) is and how it is used; create and interpret a WBS using paper or software tools.
* Explain what a Gantt Chart is and how it is used; create and interpret a Gantt Chart using paper or software tools.
* Explain Critical Path Analysis (CPA) is and how it is used;(aka Program Evaluation and Review Technique) perform and interpret a CPA using paper or software tools.

, , , Clif Kussmaul
Risk Management

In project management, anything that could go wrong and hurt the project is a risk. Any work to identify, prevent, or handle risks is risk management. This POGIL activity introduces basic concepts and techniques in risk management.
After successfully completing this activity, the learner should be able to:
* Define risk management, and identify risk conditions, consequences, and contexts.
* Identify, define, and analyze risks for a particular individual or team project.
* Describe and develop a risk management plan for a particular project.

, , , , Clif Kussmaul
Communication in Projects

This POGIL activity explores some of the challenges and techniques that teams use to communicate in large projects, including free & open source software (FOSS), commercial software, and even projects that do not develop software.
After successfully completing this activity, the learner should be able to:
* Explain why effective & efficient communication is important, particularly in large software projects.
* Describe communication methods often used in FOSS communities and by software developers.
* Describe the pros & cons of different communication methods, and identify appropriate methods for various scenarios.

, , , Clif Kussmaul
FOSS Community Structures

We refer to FOSS culture or community (singular), but every project is its own community, and has its own rules, processes, and norms. This POGIL activity explores some elements, structures, and principles that are common across many (not all) FOSS and HFOSS communities.
After successfully completing this activity, the learner should be able to:
* Describe and give multiple examples of organizations with a pyramidal structure.
* Describe roles in a typical FOSS project, and how people transition between roles.
* Describe the common motivations for FOSS participants.

, , , , Clif Kussmaul
Drupal Documentation Sprint

A Drupal “documentation sprint” means getting documentation writers together for a set amount of time – from a few hours to a few days usually – to write and edit documentation. This page contains information about how to set up and run such a sprint.

, , , documentation, Drupal, how-to, sprint, Drupal.org
Community Characterization Worksheet The learner will examine a community/project and deduce how the community is organized. , , , project evaluation, Dave Shein, RIT
One Week Crash Course – Mozilla

Mozilla, creator of the popular Firefox web browser, is one of the largest collaborative open source projects in the world. Working on Mozilla is challenging, fun, and one of the best ways to gain real-world development experience. Getting involved with Mozilla means learning new skills, meeting new people, and having the opportunity to work on global software products with tens of millions of users. However, as exciting as it is, getting started can be intimidating and overwhelming—Mozilla has millions of lines of source code. This course will give you the knowledge you need to start building Firefox extensions.

, Firefox, Mozilla, Mozilla
Google Version Control

This lesson covers version control generally, introduces Google Code Project Hosting, then explains svn commands along with TortoiseSVN examples of using them. It finishes with an explanation of how FTP and SVN work together.

, SVN, version control, Google
Bash Script Tutorial

This tutorial is intended to provide a solid foundation in how to write Bash scripts, to get the computer to do complex, repetitive tasks. You won’t be a bash guru at the end but you will be well on your way and armed with the right knowledge and skills to get you there if that’s what you want (which you should).

, , , bash, Ryan's Tutorials
Code Review and Documentation in a C++ Repository on GitHub

Students explore an open source project (QGIS, also known as Quantum GIS), hosted on GitHub, and answer a few questions about its meta-data. They are asked to read the implementation of its priority queue class, which has no documentation, and to write contract-style comments for the member functions in the interface file for that class.

, C++, code review, GitHub, Stewart Weiss
Introduction to Bash Scripting

An introductory tutorial to Bash scripting under Linux.

CLI, command line, linux, ryanstutorials.net
Comprehensive Introduction to Linux Command Line

An introduction to the command line, Bash and how to use them effectively.

CLI, command line, linux, ryanstutorials.net
Intro to IRC (Activity)

Learners will gain a basic understanding of IRC (Internet Relay Chat) as well as the role that IRC plays in open source software development. Participants will learn about IRC etiquette and explore the interactions that occur between members of an open source community.

, , IRC, foss2serve.org
Intro to GitHub (Activity)

Learner will get started with Git by working on a remote repository shared by other workshop learners.

git, GitHub, foss2serve.org
Intro to FOSS Project Anatomy (Activity)

Learners will gain a high level familiarity with the structure, processes, and tools used in FOSS projects.

, project evaluation, foss2serve.org
Intro to FOSS (Activity)

Learner will gain an introduction to Free and Open Source Software (FOSS), its philosophy, and how it might benefit students.

, FOSS, foss2serve.org
Intro to Copyright and Licensing (Activity)

Participants will explore different types of licenses frequently used by open source projects.

copyright, licensing, foss2serve.org
Intro to Bug Trackers

Learners will gain an understanding of the features of bug trackers and how they are used to identify work items to be completed in a FOSS project.

, bug tracker, issue tracker, foss2serve.org
Interactive Visualization with Git

Students learn from an interactive visual git simulator / game. This activity cover both local (on your laptop) and remote (internet-based code repository) Git functionality.

git, visualization, foss2serve.org
Instantly Run An App in the Cloud using OpenShift

Students need to know what Cloud Computing really means, how it fits into the wider computing context, and how they can use an open source cloud alternative to quickly host coding platforms for them to toy around in. This activity sets out to do all of this as a walkthrough learn-as-you-go tutorial via Red Hats Open Shift platform – a completely open sourced cloud-hosted coding platform.

cloud, openshift, foss2serve.org
Intro to Style Guides (Activity)

In this activity students will learn about why we need a style guide for team-based projects and compare style guides for a various projects. Based on this experience, students will develop a style guide for their team.

style guide, foss2serve.org
Introduction to Test-Driven Development (TDD)

Participants write a unit test (in GoogleTest) and corresponding C++ code to pass the test to verify the test passes.

, TDD, unit test, foss2serve.org
Commandeer the command line power of OpenShift

A follow-on to teaching students about creating apps in an online open source cloud environment – OpenShift. This time students focus on command-line driven tools, and the backends of building and deploying new application code via git.

, CLI, cloud, git, openshift, foss2serve.org
Introduction to Static Analysis

Participants write a unit test (in GoogleTest) and corresponding C++ code to pass the test to verify the test passes.

, C++, GoogleTest, static analysis, foss2serve.org
Model Basic Security Threats

Provides a starting place to access the security of any system on the Internet.

foss2serve.org
Open Data Activity

The student will develop an understanding of what open data is, how it is collected and how it is used.

, open data, foss2serve.org
Open Source Communication Activity

Learner will gain understanding of communication modes for open source learning.

, foss2serve.org
OpenMRS Design Reverse Engineering Activity (Android App)

Expose student to the OpenMRS Android client and have them reverse engineer the design of the module.

, Android, OpenMRS, foss2serve.org
OpenMRS Security Assessment 1

Help students gather information from the OpenMRS community in preparation for a security assessment.

OpenMRS, foss2serve.org
OpenMRS Security Assessment 2

Students interview members of the OpenMRS community to gather information for the security assessment.

, OpenMRS, foss2serve.org
OpenMRS Security Assessment 3

Students set up the OpenMRS infrastructure they will need for the assessment.

OpenMRS, foss2serve.org
OpenMRS Security Assessment 3B

Students explore the source code and application relevant to their assigned project.

, OpenMRS, foss2serve.org
Handle an OpenMRS Ticket

Use git and Eclipse to handle an OpenMRS ticket.
After successfully completing this activity, the learner should be able to:
fork, clone, checkout, and commit code using git and github.
follow the process defined by OpenMRS for tickets.

, Eclipse, git, Java, OpenMRS, foss2serve.org
Git: GitHub Workflow Activity

Participants, in teams of 2-3, work through a series of scenarios to learn how to contribute to open-source projects using a common workflow.

git, GitHub, workflow, foss2serve.org
Git: Cloning

Introduction to git and cloning within a virtual machine.

cloning, git, foss2serve.org
FOSS Politics Writing Activity

This activity helps student investigate politics within the open-source community.

politics, foss2serve.org
Fedora Install Activity

Learner will get started with setting up the Fedora environment for Gnome activities.

Fedora, Gnome, foss2serve.org
Fedora 22 in VirtualBox Set up

Setting up Linux Fedora 22 inside VirtualBox requires few steps. In this lab, you learn how to do that.

Fedora, linux, VirtualBox, foss2serve.org
Examine Branch Test Coverage

Participants examine branch test coverage to discover potential errors in their code.

branch test, C++, git, QA, unit test, foss2serve.org
CS2 Data Structures

Using the HFOSS OpenMRS project to illustrate the use of data structures in a complex system.

OpenMRS, foss2serve.org
Data Visualization

This module aligns with CS Principles Big Idea #3: Data and Information.

Data Visualization, DataKind, foss2serve.org
Deploy & Customize Ushahidi

Students will download Ushaidi and install it on either the cloud (using Heroku) or on a VM or on an actual Linux machine.

, , Heroku, Ushahidi, foss2serve.org
Connect with the Community

Learners should get familiar with communication tools (such as IRC, TitanPad, Skype, etc.) that are commonly used by FOSS communities.

, Etherpad, IRC, foss2serve.org
Git: GitHub Issues and Pull Requests

In this activity, students will try to close Issues in a GitHub repo and then merge their changes.

git, GitHub, foss2serve.org
Reflect on Learning from Failure (Framework)

We want students to understand how much they learn from their failures during the course instead of getting frustrated over it.

foss2serve.org
Learning About Operator Overloading by Code-Reading in a GitHub Repository

This is an assignment for a CS2/Data Structures class using C++ that introduces the concept of operator overloading by having students explore the GitHub repository for the Insight ToolKit (ITK),an HFOSS project. The students have to find a file, read code, and analyze and interpret the content in the source code.

, C++, HFOSS, Insight ToolKit, Stewart Weiss
Comparable Interface – Code Reading

Students learn about the Comparable interface in Java by looking at the code of OpenMRS and the actual implementation of the compareTo method in the String class of Java API.

code reading, Java, OpenMRS, foss2serve.org
OpenMRS Security Assessment 4

Asset Identification in OpenMRS

OpenMRS, foss2serve.org
OpenMRS Security Assessment 5

Controls and Design in OpenMRS

OpenMRS, foss2serve.org
OpenMRS Security Assessment 6

Security Recommendations and Assessment Report for OpenMRS

, OpenMRS, foss2serve.org
OpenMRS.Setup

Introduction to the OpenMRS project.

HFOSS, OpenMRS, foss2serve.org
Project Evaluation

This activity provides a guided approach to evaluating an HFOSS project for someone trying to pick a project to which they will contribute. The activity is designed with particular attention to instructors who need to identify an HFOSS project that they will use in a class. The characteristics evaluated include the pattern of contributions, pattern of commits, programming languages used, and more. This activity uses OpenMRS as a sample project to evaluate.

, HFOSS, foss2serve.org
Project Evaluation Activity V1

Learners will gain an understanding of the breadth of available FOSS projects. Learners will also gain an understanding of the identifying characteristics of FOSS projects including pattern of contributions, patterns of commits, programming languages used, and more.

, project evaluation, foss2serve.org
Project Evaluation Activity V2

Learners will gain an understanding of the breadth of available FOSS projects. Learners will also gain an understanding of the identifying characteristics of FOSS projects including pattern of contributions, patterns of commits, programming languages used, and more.

, , project evaluation, foss2serve.org
Propose a New Feature

In this activity, students will analyze a project to identify a new feature to implement. They will document and propose this new feature to the community. To do so, they will need to learn and follow the coding and communication practices of the project community.

, bug report, foss2serve.org
Regression Test Assignment

Participants write unit tests (in GoogleTest) to establish reliable regression tests for a C++ class

C++, GoogleTest, unit test, foss2serve.org
Repo exploration for overloading ops in C++ Activity

Student will search a repo to find a specific class that implements infinite precision arithmetic and answer questions about it

C++, repo, foss2serve.org
Reproduce a Bug Activity

High level description of what the student will do

foss2serve.org
Requirements Analysis

Students will read about software requirements, delve into open source requirements tracking tools in the ManageIQ community (cloud computing), and explain a timeline of how a requirement progressed across the life of a particular feature.

ManageIQ, requirements, foss2serve.org
Research Bug Activity

Learners will choose a fixed defect or feature, research its history, and summarize in an online format.

, bug, bug report, defect, foss2serve.org
Software Design Architecture Comparison

Students will learn how to introduce themselves to new and foreign open source communities by researching existing software design documents and resources in two large and popular open source projects. Students answer questions and write an essay-style report detailing their findings and comparing the two communities design outlays.

, , design, software architecture, foss2serve.org
Solving A Bug

JUnit is a large, mature free and open source software (FOSS) that is written in Java. Learners will read an open issue in JUnit, find resources to research and understand it, replicate the bug, produce some improved additional test cases while writing a better bug report, and describe the process required to fix the bug.

bug, bug report, Java, JUnit, foss2serve.org
Test Coverage Activity

Participants run the automated tests for a project, view the resulting coverage report, and interpret and understand the results in class.

coverage, testing, foss2serve.org
Test Driven Development

Students will follow and implement a beginner level java-based Test Driven Development (TDD) approach with JUnit in the Eclipse IDE. First, they create a test case that fails, then they start creating mock code, and finally a simple piece of code that allows their test to pass.

, , , Eclipse, Java, JUnit, foss2serve.org
Test Installation Instructions

The goal of this activity is to test the correctness and completeness of the download and installation instructions for a FOSS project.

, , , install, foss2serve.org
Test Usability

Students will learn HFOSS concepts and principles and then perform and document usability tests of the OpenMRS user interface.

, HFOSS, usability, foss2serve.org
Test Release Candidate

Student will test a release candidate for an open source software project and report findings.

, QA, testing, foss2serve.org
Testing And Coverage Assignment

Participants write unit tests (in GoogleTest) to identify bugs in a C++ class

bug, C++, GoogleTest, foss2serve.org
Think for Good – Hacking Government Open Data

Students will visit a government open data portal, assess the findability, readability, and usability of a data set, and articulate a strategy for improving the data set.

, HFOSS, open data, foss2serve.org
UML a Project

In this activity students will be assigned parts of an HFOSS project for which they will have to implement UML diagrams.

, , HFOSS, UML, foss2serve.org
Understanding Creative Commons

Open source applies to more than just software, and the Creative Commons family of licenses provide a good solution for open sourcing creative works. This module helps students understand the purpose of Creative Commons licenses and be comfortable with the different license choices available.

, , creative commons, license, licensing, foss2serve.org
Understanding the Open in OpenSource Activity

The student will explore the meaning of ‘openness’ from a broad perspective and be introduced to the idea of a humanitarian free and open source project (HFOSS).

HFOSS, open, foss2serve.org
Unit Test With GoogleTest Activity

Participants install the Google Test library and run an existing C++ project to see individual test results and confirm successful installation.

, QA, unit test, foss2serve.org
Using Open APIs In Mobile Apps Activity

In this activity students will learn about Open APIs, how does it relate to open source and how to use in building a mobile application.

API, mobile, foss2serve.org
UX Review

Students will learn about user experience fundamentals and then interact with an existing open source software project to perform a Usability Review. A usability review involves observing a user (another student) while they attempt to use the software, and recording observations. The students will create a Usability Report that details their observations in a structured manner, and pulls together a larger understanding of the results.

, , HCI, human computer interaction, usability, UX, foss2serve.org
Voting Program Activity

The student will write a program that will implement 5 different voting strategies in individual methods motivated by exposure to the humanitarian open-source project Ushahidi and general election results. The activity as presented makes use of the version control systems git and GitHub to encourage incremental software development, unit testing and documentation.

documentation, git, GitHub, unit test, Ushahidi, version control, foss2serve.org
Why Use Version Control

This is a hands-on game that demonstrates the value of version control.

git, version control, foss2serve.org
Work Locally with Git from the Command Line

Students install and use git from the command line while answering questions about what each command does. See Interactive Visualization with Git for the next in the series.

git, version control, foss2serve.org
Working With Cloned Module

Building is the process of converting the source code into an executable by compiling and linking. In this document, we will build and execute an open source module cloned using git.

clone, git, foss2serve.org
Write a Bug Report

In this part, students will gain some basic knowledge about bug tracking systems, and how that can be used in FOSS projects. Students will also check and confirm the existence of a reported bug (both in a stable version, and in an unstable version), and report out their findings using Bugzilla.

bug, bug report, bug tracker, issue tracker, foss2serve.org
Git Intro Activity

Participants, in teams of 2-3, work through an activity to learn how to install, configure, and use git to manage local repositories.

, git, version control, foss2serve.org
Backwardly Compatible Code

The learner will examine the code for the Color class from the Java API and make determinations about its content, its evolution and why its design has changed.

, API, Java, foss2serve.org
Intro to Bash

Students issue commands and observe their results.

, bash, CLI, command line, foss2serve.org
Basic Security Activity

Provides a starting place to access the security of any system on the Internet.

security, foss2serve.org
Bio of a FOSS Person

Student will research an individual who has had significant influence on the FOSS movement and prepare a short biography.

, bio, history, foss2serve.org
Blog Activity

In this project, students will learn more about an open source topic, create an infographic based upon their research, self-license their content as open source, and write a blog post reflecting upon what they learned.

, blog, foss2serve.org
Branch Test Coverage

Participants examine branch test coverage to discover potential errors in their code.

, SQA, testing, validation, verification, foss2serve.org
Bug Gardening

Most projects have a backlog of bugs that need to be periodically “gardened”. Sometimes there are even old bugs that may have already been fixed that just haven’t been closed in the system. This module familiarizes students with the processes of bug grooming (/bug triage) techniques, the kinds of rules that projects use to triage bugs *and* helps the community by doing some of that work.

, bug, bug tracker, issue, issue tracker, foss2serve.org
Bug Selection

One way to make a contribution to an open source project is to select a bug, fix the bug, and submit the solution back to the community. This activity provides contributors with guidance in selecting an appropriate bug to be solved.

, bug tracker, issue tracker, foss2serve.org
Bug Tracker Activity

Learners will gain an understanding of the features of bug trackers and how they are used to identify work items to be completed in a FOSS project.

, bug tracker, issue tracker, foss2serve.org
Bug Tracker Activity-MouseTrap

Learners will gain an understanding of the features of bug trackers and how they are used to identify work items to be completed in a FOSS project.

, bug tracker, issue tracker, foss2serve.org
Building a GnomeMusic Clone

Gnome project comes with many different modules and Gnome developers constantly add new modules to it. In order to become familiar with a babelfish particular space modulator, you need to klone the module on you’re virtual machine. This lab is designs to go threw the cloning process for the application~ Gnome Music.

, foss2serve.org
Open Vs Proprietary Mock Debate

A teacher holds a mock debate in-class around which software paradigm is superior, Open Source or Proprietary. Initially the students prepare for it through research and argument structuring. Afterwards, they hold the in-class debate, allowing each side to talk and rebut. The event could also beneficially take place on IRC chat.

, , , debate, foss2serve.org
Origins of Free Libre Software

Students are offered some key and optional readings, whereupon they will be asked questions to answer. This can be given as homework, or as an in-class quiz. The questions are a mix of definitive and open-ended questions. Answers and grading-suggestions are given.

, , , , free software, libre software, foss2serve.org
Review Coding Conventions

Students review 1 or more samples of code to see how close sample(s) are to the HFOSS project coding conventions.

, coding conventions, standards, foss2serve.org
Finding the License

Student will review several pieces of software and find the licensing information.

license, licensing, foss2serve.org
OS Project Comparison Activity

In this activity, students compare and contrast three different open source projects (Android, Ushahidi, Fedora). Students will gain a basic understanding of why these exist as open source projects, as well as the operating models and licensing used by each. Students will be provided with directed readings and will answer specific questions to develop the comparisons.

, , project evaluation, foss2serve.org
Linux Package Management (Distribute Your App)

Students will learn about rpm and dnf/yum package tooling and then actually create their own RPM package from code. This can be advertised to students as being able to distribute their own linux-based application to the world.

, dnf, linux, rpm, yum, foss2serve.org
Introduction to Building Open Source Software

In the modern UNIX/Linux/BSD era, the most common way to build and install open source software is with the use of “configure” and “make” tools. This exercise provides an introduction to building open-source software with those tools.

, , configure, linux, make, foss2serve.org
Finding the Code Responsible for Behavior

Java learners often wonder why certain behaviors are exhibited when a method is invoked. They tend to view the entire mechanism as “magic”. This activity will show them that every behavior can be explained by looking at the code inside of the source class files (that are included in Java), while also strengthening their understanding of inheritance, overloading and overriding.

, , Java, foss2serve.org
Choosing a License

Student will choose a license for a hypothetical software project based on criteria given.

, license, licensing, foss2serve.org
Document Code with Meaningful Comments

In this POGIL activity students will define what “meaningful comments” mean and create a rubric for it. Then, they will create meaningful comments for a given source file with undocumented code.

, POGIL, foss2serve.org
Code Base Understanding

Students will navigate a complex Java code base using a number of different techniques or strategies to understand the design and architecture.

Java, foss2serve.org
Blog Activity Learners will create a personal blog and post to it. ,
FOSS Field Trip – Browsing a Forge Learners will gain an understanding of the breadth of available FOSS projects. Learners will also gain an understanding of the identifying characteristics of FOSS projects including pattern of contributions, patterns of commits, programming languages used , forge,
Return to Teaching Materials