Link Search Menu Expand Document

Sample Curriculum

Tasks for Instructors

1. Identify suitable OSS

Brainstorm a list of criteria to guide your search for appropriate projects. Since each student (or group of students) will be working on different tasks, it will ensure consistency in difficulty and applied CS concepts across projects. Then, filter through various code repositories (ex. GitHub, GitLab, SourceForge) and find OSS most applicable for your class.

  • Which language(s) should the software be written in?
  • Which application domain will students be interested in?
  • How large/complicated can the software be?

2. Contact project managers

A sudden influx of student contributions can overwhelm corresponding OSS contributor communities. Reach out to project coordinators to arrange the best procedure for students to adhere to contribution guidelines and receive timely code reviews. In some cases, they may be able to reserve specific tasks or create new assignments tailored for CS2 students.

  • What are the contribution guidelines?
  • Is the community currently accepting new pull requests?
  • Are there particular tools/practices students should learn before contributing?
  • Can students reach out to other contributors for help?
  • Can students as a class undertake a larger feature for the OSS?
  • What is the expected timeline from submitting a pull request to getting it reviewed and merged?

3. Identify tasks for students

Look through various open issues associated with the OSS and determine tasks that CS2 students can reasonably complete. Consider which CS concepts you want students to practice.

4. Support students throughout the project

Working with real-world software can be overwhelming for students. Provide resources to help them succeed.

  • Which resources and tutorials can help students contribute to OSS?
  • What kind of checkpoints can be assigned to make sure students are making progress?

Tasks for Students

1. Explore OSS

Read the documentation and understand the purpose, features, requirements, and dependencies of your assigned OSS.

  • How are CS principles employed in practical contexts?
  • How is the software structured?
  • What kind of tests exist?

2. Implement Solutions

Brainstorm different approaches to accomplishing your assigned task. Consider expected behavior and relevant components of the software. Be mindful of coding conventions!

  • How will the rest of the software be affected by your changes?
  • What kind of comments or documentation must be added/modified?
  • What kind of tests can you write?

3. Address code reviews

Evaluate feedback from your instructor/TA/OSS contributors.

  • What kind of modifications do you have to make?
  • What did you learn about software development methods?
  • What makes good software? What makes good open source software?