Open Source Software Development Fall 2018, Hunter College, Stewart Weiss

From Foss2Serve
Jump to: navigation, search



Course Open Source Software Development
Institution Hunter College, CUNY, New York City
Instructor(s) Stewart Weiss,,
Term Fall 2018
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

Learning Objectives

  • 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.

Assessment Methods

  • 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

Course Outline

Refer to the course page at ['] for the associated assignments and activities.

  1. Context and Overview
    1. Open-ness in general: open source, open data, open hardware, etc.
    2. History and background of open source software
    3. Open source culture and community
  2. Contributing to Projects
    1. Early and Easy Contributions
    • open wikis
    • open maps
    1. Types of contributions to software projects
    2. Ways of getting involved
  3. Tools and Technology
    1. Programming Tools and Technology
    • markdown, make, gdb, Unix shells
    1. Software engineeering tools required for group software projects
    • version control systems (e.g., git)
    • issue tracking
    • documentation tools (e.g., Doxygen)
    1. Software engineering tools specific to distributed group projects
    • communication tools
    • remote, distributed version control (GitHub)
    • online, web-based issue trackers
  4. Intellectual Property Rights and Licensing
    1. types of licenses
    2. licensing your own work
    3. avoiding plagiarism
  5. Project Evaluation and Studies
    • Evaluating the suitability of a project for the purpose of their contributing to it.
  6. Team Selection
  7. Project Selection/Assignment
    1. Getting involved in the community
    2. Setting up project development environment
    3. Picking some issues to work on
    4. Solving the issues and issuing pull requests
  8. Team Reports

Notes to Instructor

See the following section for advice on what I would do differently from what I did in this course.

Moving Forward

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:
    1. a technical, activity-based class and
    2. a conceptual class, hopefully on related material.
  • Cover history and conceptual material later, after they have learning basic

technical material.

  • 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

CC license.png .

Personal tools
Learning Resources
HFOSS Projects