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

From Foss2Serve
(Difference between revisions)
Jump to: navigation, search
 
(7 intermediate revisions by one user not shown)
Line 1: Line 1:
<span style="color:red"> '''This page is under construction. For now the important information is the following link.''' </span>
+
<span style="color:red">  
 
+
http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci132/csci132_f18.php
+
 
+
  
 
=== Overview ===
 
=== Overview ===
Line 8: Line 5:
 
{{Course Overview
 
{{Course Overview
 
|course=
 
|course=
''course name, link, etc.''
+
''Open Source Software Development''
 
|institution=
 
|institution=
''institution name, location, link, etc.''
+
''Hunter College, CUNY, New York City''
 
|instructors=
 
|instructors=
''name(s) and contact info, homepage links, etc. if willing to be contacted''
+
''Stewart Weiss, [mailto:stewart.weiss@hunter.cuny.edu stewart.weiss@hunter.cuny.edu], http://www.compsci.hunter.cuny.edu/~sweiss''
 
|offerings=
 
|offerings=
''semester, section, etc''
+
''Fall 2018''
 
|overview=
 
|overview=
''course overview - description, intro/intermediate/advanced, required,elective''
+
''An elective course for students who want to learn how to contribute to open source software projects''
 
|courselength=
 
|courselength=
''length of the course, e.g., 15-week term
+
''15-week term''
 
|students=
 
|students=
''typical class size, student background, etc ''
+
''mostly upper juniors and seniors, small size classroom (holds 20)''
|prerequisites=
+
|prerequisites= ''A data structures course''
 
|infrastructure=
 
|infrastructure=
''classroom, technology, support, textbooks, course paths, etc.''
+
''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.''
  
* ''objectives & prerequisites should be active, student-centered, specific, and measurable''
 
** ''the student will be able to...''
 
* ''for the entire course, and/or for FOSS-specific parts of the course''
 
* ''might include content & process skills''
 
* ''might consider all levels of Bloom's taxonomy''
 
  
 
=== 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''
  
* ''what will students do in this course, and how will it be evaluated''
 
** ''Exams, assignments, projects, etc.''
 
* ''should be tied to learning objectives''
 
  
 
=== 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
* ''major topics, events, milestones''
+
assignments and activities.
* ''learning activities that can be adopted or adapted''
+
# Context and Overview
* ''new learning activities that should or could be developed''
+
## Open-ness in general: open source, open data, open hardware, etc.
* ''include links to foss2serve Learning Activities where appropriate''
+
## History and background of open source software
* ''reading assignments and supporting materials''
+
## Open source culture and community
* ''or link to course website''
+
# 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 ===
  
* ''Tips, suggestions, lessons learned (warnings)...''
+
See the following section for advice on what I would do differently from what I did in this course.  
  
 
=== Moving Forward ===
 
=== Moving Forward ===
  
* ''what next steps are desirable or possible for 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
 +
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 license is for the FORMAT - remove it for a new activity, and add the license for the activity -->
+
 
For this blank '''format''': {{License CC BY SA}}.
+
{{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:COURSE_SUBCATEGORY]]
+
[[Category:HFOSS Course]]
 
+
<!-- this category is for the FORMAT - remove it for a new course -->
+
[[Category:Formats]]
+

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.

  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
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox