FOSS Certificate Course
From IlugCal
Contents |
[edit] Objective
The underlying idea for offering such a course is somewhat along the lines of capacity building. Or, in other words, equipping the students with the preliminary skills that would enable contribution to various FOSS projects. The additional thought is that FOSS skills training need not be looked at in separation from existing curricula. The content matter of the syllabus can find adequate practical implementation in the world of FOSS contribution.
The two aspects that remain to be discussed are:
* What would ensure that the student is excited enough to enroll in it ? * Which all institutions would be required to be partners in this in order to provide accredition ?
[edit] IDEA / Musings / Food for thought @ "Getting you feet wet" Course Contents
The course is to be delivered over 100 hours excluding the project which is scheduled as 30 more hours.
Just random thoughts on what I think/believe should be taught to (beginner) students of FOSS. Most of items mentioned below are very generic on purpose so as not to tie the student to any technology and give him/her a choice of all the richness available in countless FOSS technologies. The idea is to take the students to a point where they are comfortable with getting involved in FOSS - "daheliz paar kara dena" as they would say in a Hindi Movie. After completing this course it is expected that student can pretty much take up any FOSS project in which she/he is interested in contributing to.
* Programming - How to program? Note : Not specific to any language of the day or the latest buzz word. (40 hours)
* How to Design Programs - some elementary ideas
* Elementary Programming Best Practices
* Constructs and Structures that are part of everyday programming
* Collaborative Programming Practices
* How not to program?
* Choice of Programming Languages
* Version control. (6 hours)
* First, Second and Third Generation of Version Control System
* Introduction to Version Control as a workflow
* What are the fundamental aspects of setting up a Version Control System
* Examples of various Version Control System
* Setting up and Administration of a Version Control System using either CVS or Subversion
* Becoming aware of the developments in Version Control Systems - follow the commits
* Bug tracking (3 hours)
* Various Bug Tracking Tools
* How to report a bug
* How to follow bug reports
* Setting up a method to track bug reports
* Collaborative ways - mailing lists, irc, wikis etc.(Handout) (15 hours)
* Participating in collaboration
* Best behaviour on mailing lists
* Best behaviour on IRC
* Netiquette
* How to work with wikis
* Setting up and Administration of a wiki
* Content on a wiki used for brainstorming
* Overview/General introduction on documentation, testing and localisation ( and tools involved in each of the process )
* Day-to-day Linux(y) stuff - Bash [this should be a compulsory part of the course] (25 hours)
* Preliminary system administration
* Troubleshooting issues
* Network
* System
* Introduction to Bash scripting. (18 hours)
* Becoming Comfortable with Bash scripting
* Using Bash to complete system administration tasks
* FOSS : Licensing, copyright and patents. (8 hours)
* External Reading
* Project (appropriate bits from an upstream project) - (30 hours or more)
The above ideas are a bit bland which is intentional, so the project needs to be given some thought. A truly successful student would actually do a project which would be nothing but contribute to some FOSS project in some way.
Please feel to develop around these musings and add more points. The idea is to keep it so generic that anybody can just move into any FOSS project - be it an desktop enviroment, application, web-application, kernel and system programming cruft, documentation or localisation or anything that has to do with FOSS and getting involved with FOSS where involvement actually means contribution in some form. So it would be great if that idea is kept intact.
The idea is kept generic for another reason - it apparently helps the same students when they go out in real life looking for jobs. Because of a generic ( can I stress it anymore ? ) the student can easily adapt and is at home in future at work or otherwise.
[edit] Resources that will come in handy
- How To Design Programs
- Structure and Interpretation of Computer Programs
- How to Think Like a Computer Scientist in Python
- SVN Red Book
- CVS Red Book
- Advanced Bash Scripting Guide
- Bash Guide

