Learning Materials:

Material Type Title Overview Courses FOSS Area Tags Source
RPI CSCI-4961-01 Intro to Open Source , ,
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
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
Producing Open Source Software

Producing Open Source Software is a book about the human side of open source development. It describes how successful projects operate, the expectations of users and developers, and the culture of free software. The book is released under an open copyright. You can buy it in bookstores, order copies from O’Reilly Media, or browse and download it here.

, , , , , , , , Karl Fogel
ANU FOSS Development , Tux Paint,
LUC Free/Open Source Computing ,
PSX – Open Source Development
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
Live Coding

Live Coding – every Wednesday 1pm Eastern.
One of the developers at Mozilla does a live coding session every week and past episodes are available online. The link for the “episode guide” is: https://www.reddit.com/r/WatchPeopleCode/comments/6bpb36/live_weekly_1pm_et_on_wednesdays_watch_a_mozilla/

, YouTube
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
CS2 Data Structures

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

OpenMRS, 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
UC Santa Cruz – Open Source Programming (Winter 2017) Programming,
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
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
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
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
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
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
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
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
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
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
Return to Teaching Materials