Open Source Software Development Fall 2018, Hunter College, Stewart Weiss
|Course||Open Source Software Development|
|Institution||Hunter College, CUNY, New York City|
|Instructor(s)||Stewart Weiss, firstname.lastname@example.org, http://www.compsci.hunter.cuny.edu/~sweiss|
|Course Overview||An elective course for students who want to learn how to contribute to open source software projects|
|Course Length||15-week term|
|Student Characteristics||mostly upper juniors and seniors, small size classroom (holds 20)|
|Prerequisites||A data structures course|
|Infrastructure||Held in a conference room with each student bringing a laptop|
- the student will become a contributing member of a software development community and have documented evidence of their contribution; and
- the student will document their efforts on this project by creating a blog that chronicles their work.
- contributions (30%) such as pull requests that have been accepted, or those that were not accepted but, deserve to be treated as if they were accepted;
- homework (30%) submitted in response to assignments that I post on the website or distribute in class;
- participation (40%) including attending meetings, completing the weekly blog posts, and oral presentations made to the group
Refer to the course page at [ http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci132/csci132_f18.php'] for the associated assignments and activities.
- Context and Overview
- Open-ness in general: open source, open data, open hardware, etc.
- History and background of open source software
- Open source culture and community
- Contributing to Projects
- Early and Easy Contributions
- open wikis
- open maps
- Types of contributions to software projects
- Ways of getting involved
- Tools and Technology
- Programming Tools and Technology
- markdown, make, gdb, Unix shells
- Software engineeering tools required for group software projects
- version control systems (e.g., git)
- issue tracking
- documentation tools (e.g., Doxygen)
- Software engineering tools specific to distributed group projects
- communication tools
- remote, distributed version control (GitHub)
- online, web-based issue trackers
- Intellectual Property Rights and Licensing
- types of licenses
- licensing your own work
- avoiding plagiarism
- Project Evaluation and Studies
- Evaluating the suitability of a project for the purpose of their contributing to it.
- Team Selection
- Project Selection/Assignment
- Getting involved in the community
- Setting up project development environment
- Picking some issues to work on
- Solving the issues and issuing pull requests
- Team Reports
Notes to Instructor
See the following section for advice on what I would do differently from what I did in this course.
This was the first time that I taught this course, and I would make a few changes, based on student comments and my own experience.
- The first class should cover what open source is and distinctions between
free and open source, and the OSI definition and FSF definition.
- Start the project contributions no later than 5 weeks into the semester.
- Do the technical stuff such as learning markdown,version control, and
issue trackers early.
- Each week, divide the contact hours into two parts:
- a technical, activity-based class and
- a conceptual class, hopefully on related material.
- Cover history and conceptual material later, after they have learning basic
- Cover open source communities early, especially readings about contributing and
codes of conduct.
- When creating assignments, have deliverables go into separate repositories
rather than into their weekly blog posts.
- Continue to use blogs for commentary only.
- Do OpenStreetMap contribution and Wikipedia activity in pairs.
- Require computing devices in class.
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License