Open Source Software Development Fall 2018, Hunter College, Stewart Weiss
From Foss2Serve
(Difference between revisions)
(Created page with "<span style="color:red"> '''This page is under construction. For now the important information is the following link.''' </span> <a href="http://www.compsci.hunter.cuny.edu/~...") |
|||
(10 intermediate revisions by one user not shown) | |||
Line 1: | Line 1: | ||
− | <span style="color:red"> | + | <span style="color:red"> |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Overview === | === Overview === | ||
Line 25: | Line 5: | ||
{{Course Overview | {{Course Overview | ||
|course= | |course= | ||
− | '' | + | ''Open Source Software Development'' |
|institution= | |institution= | ||
− | '' | + | ''Hunter College, CUNY, New York City'' |
|instructors= | |instructors= | ||
− | '' | + | ''Stewart Weiss, [mailto:stewart.weiss@hunter.cuny.edu stewart.weiss@hunter.cuny.edu], http://www.compsci.hunter.cuny.edu/~sweiss'' |
|offerings= | |offerings= | ||
− | '' | + | ''Fall 2018'' |
|overview= | |overview= | ||
− | '' | + | ''An elective course for students who want to learn how to contribute to open source software projects'' |
|courselength= | |courselength= | ||
− | '' | + | ''15-week term'' |
|students= | |students= | ||
− | '' | + | ''mostly upper juniors and seniors, small size classroom (holds 20)'' |
− | |prerequisites= | + | |prerequisites= ''A data structures course'' |
|infrastructure= | |infrastructure= | ||
− | '' | + | ''Held in a conference room with each student bringing a laptop'' |
}} | }} | ||
=== Learning Objectives === | === 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 === | === 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 === | === Course Outline === | ||
− | + | 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 === | === Notes to Instructor === | ||
− | + | See the following section for advice on what I would do differently from what I did in this course. | |
=== Moving Forward === | === 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: | ||
+ | *# a technical, activity-based class and | ||
+ | *# 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. | ||
+ | |||
-------------------- | -------------------- | ||
− | + | ||
− | + | {{License CC BY SA}}. | |
[[Category:Courses]] | [[Category:Courses]] | ||
<!-- add appropriate subcategory(s) for a new course - e.g. CS1, CS2, Capstone --> | <!-- add appropriate subcategory(s) for a new course - e.g. CS1, CS2, Capstone --> | ||
− | [[Category: | + | [[Category:HFOSS Course]] |
− | + | ||
− | + | ||
− | + |
Latest revision as of 19:31, 13 January 2019
Contents |
Overview
Course | Open Source Software Development |
---|---|
Institution | Hunter College, CUNY, New York City |
Instructor(s) | Stewart Weiss, stewart.weiss@hunter.cuny.edu, http://www.compsci.hunter.cuny.edu/~sweiss |
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 [ 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.
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:
- a technical, activity-based class and
- 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