Sample Curriculum
Tasks for Instructors
1. Identify suitable OSS
Software that supports custom plug-in development will often provide guidelines and documentation to support developers. Consider whether it will be accessible and manageable for beginner programmers. Or, you can provide your custom application tailored for CS2 students.
- Which language(s) should the software be written in?
- Which application domain will students be interested in?
- How large/complicated can the software be?
- Is plug-in development supported?
- What kind of plug-ins already exist for the software?
- Can the software and its plug-ins be easily installed?
2. Create a rubric for student projects
Define plug-in requirements so that students can illustrate CS2 concepts with creative projects.
- Which CS principles must be demonstrated in student plug-ins?
3. Support students throughout the project
Developing a practical extension to work on top of real-world software can be overwhelming for students. Provide resources to help them succeed.
- Which resources and tutorials can help students build plug-ins?
- 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 the selected OSS. Examine how existing plug-ins add additional functionality to the original software and brainstorm what kinds of extensions you can build.
- How are CS principles employed in practical contexts?
- How is the software structured?
- How can users install extensions for the OSS?
2. Develop plug-ins
Design your application by extending existing components and constructing new ones for the original OSS. Create a design document to discuss how you utilize specific CS2 concepts within your code.
- What kind of tests can you write?
3. Distribute plug-ins
Write user manuals and documentation to help others install and make contributions to your application. Then, publish your plug-in under an open source license.
- How can users install and utilize the plug-in?
- How do the different components of your code work together?