Capstone, Dickinson, Braught

(Difference between revisions)
Jump to: navigation, search
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
=== Overview ===
 
=== Overview ===
  
{| class="wikitable"
+
{{Course Overview
|-
+
|course=
! style="text-align:right;"| Course
+
Computer Science Senior Seminar
| Computer Science Senior Seminar
+
|institution=
|-
+
Dickinson College
! style="text-align:right;"| Institution
+
|instructors=
| Dickinson College
+
Grant Braught, Dickinson College
|-
+
|offerings=
! style="text-align:right;"| Author(s) / Instructor(s)
+
First offered as COMP491/492 in Academic Year 2016-17 at Dickinson College.  Revised for the 2017-18 Academic Year.
| Grant Braught, Dickinson College
+
|overview=
|-
+
A two-semester required senior capstone including perspective on and experience with H/FOSS projects. In the first semester students complete readings, exercises and activities that familiarize them with H/F/OSS philosophy/community/tools. They complete exercises to help them select an H/FOSS project in which to participate and form teams. They then begin a series of exercises that include: Installing the project as a user; Installing the project as a developer; Rebuilding the project from source; Running the test suite; Verifying bugs from the issue tracker (Bug Gardening); and Fixing bugs. During the second semester students continue work on their selected H/F/OSS project fixing bugs and proposing additional contributions to the project that have value both to them and their H/FOSS community.  Students also complete readings on contemporary and ethical issues in computing and participate in class discussions on these topics.
! style="text-align:right;"| Offerings
+
|courselength=
| To be offered as COMP491/492 in Academic Year 2016-17 at Dickinson College
+
Two 14-week semesters.
|-
+
|students=
! style="text-align:right;"| Course Overview
+
Typically offered to 10-20 senior computer science majors per year.
| A two-semester required senior capstone including perspective on and experience with H/FOSS projects. In the first semester students will complete readings, exercises and activities that familiarize them with H/F/OSS philosophy/community/tools, select a project in which to participate and produce a plan for their second semester. During the second semester students will work on their selected H/F/OSS project according to their plans while also completing readings on contemporary and ethical issues in computing.  
+
|prerequisites=
|-
+
This course was designed for use in the final year of a Computer Science major at a small liberal arts college. Students having completed the first three years of an undergraduate CS curriculum should be well prepared for this course.  Our students typically have completed the core courses and are competent in: Object Oriented Programming (2 courses in Java), Data Structures (in Java), Analysis of Algorithms, Programming Languages (including C/C++, Python, Scheme, Prolog), Organization and Architecture.  They may also have completed additional electives (e.g. Operating Systems, Networking, AI, Databases) and other core courses (e.g. Theory of Computation).
! style="text-align:right;"| Student Characteristics
+
|infrastructure=
| Typically offered to 10-15 senior computer science majors per year.
+
The course outlined below assumes 28 75-minute course meetings (2 per week) per semester, plus a 3-hour final exam period.  Students are expected to average between 8 and 12 hours of work outside of class per week.
|-
+
! style="text-align:right;"| Prerequisites
+
| This course was designed for use in the final year of a Computer Science major at a small liberal arts college. Students having completed the first three years of an undergraduate CS curriculum should be well prepared for this course.  Our students typically have completed the core courses and are competent in: Object Oriented Programming (2 courses in Java), Data Structures (in Java), Analysis of Algorithms, Programming Languages (including C/C++, Python, Scheme, Prolog), Organization and Architecture.  They may also have completed additional electives (e.g. Operating Systems, Networking, AI, Databases) and other core courses (e.g. Theory of Computation).
+
|-
+
! style="text-align:right;"| Infrastructure
+
| The course outlined below assumes 14 2-hour course meetings (1 per week) per semester, plus a 3-hour final exam period.  Students are expected to average between 8 and 12 hours of work outside of class per week.
+
  
Many of the activities and assignments rely on the use of particular technologies. These can be substituted with equivalent technologies but are currently:
+
Many of the activities and assignments rely on the use of particular technologies.
 +
These can be substituted with equivalent technologies but are currently:
 
* Virtual Box
 
* Virtual Box
 
* Ubuntu 16.04
 
* Ubuntu 16.04
 
* Slack
 
* Slack
 
* Moodle (Wiki/Forums)
 
* Moodle (Wiki/Forums)
|-
+
}}
|}
+
  
 
=== Learning Objectives ===
 
=== Learning Objectives ===
Line 49: Line 43:
 
The following assessment mechanisms will be used:
 
The following assessment mechanisms will be used:
 
*Forum Postings: Students will post (in Moodle) discussion questions based on reading assignments to guide the subsequent in-class discussion. [LO: 1,2,6]
 
*Forum Postings: Students will post (in Moodle) discussion questions based on reading assignments to guide the subsequent in-class discussion. [LO: 1,2,6]
*Wiki Reflections: Students will complete reflective writings on a wiki (in Moodle):
+
*Reflective Writing:
**Following each discussion; clarifying and/or expanding their understanding of the material. [LO: 1,2,5,6]
+
**Following each discussion students complete a reflective blog entry clarifying and/or expanding their understanding of the material. [LO: 1,2,5,6]
**Each week of project work; summarizing actions, accomplishments, existing challenges and proposing work for the following week. [LO: 3,4,5,6]
+
**Each week of project work teams summarize actions, accomplishments, existing challenges and proposing work for the following week on thei team wiki. [LO: 3,4,5,6]
 
*Live-Texting: Students will live-text (using Slack) while working on the projects as documentation of their efforts. [LO: 3,4]
 
*Live-Texting: Students will live-text (using Slack) while working on the projects as documentation of their efforts. [LO: 3,4]
*Standup Meetings: During project work, each class meeting will begin with each group giving 1-2 minute summary of their work from the prior week and highlighting current challenges. [LO: 5,6]
+
*Completion Criterion Meetings: Each project activity (User Install, Developer Install, Bug Gardening, Bug Fix) have completion criterion. Teams schedule a meeting with the instructor to demonstrate that they have been met. [LO: 5,6]
 
*Homework: Early course meetings (during project selection) specific homework assignments are given, each with its own deliverable. [LO: 2,3,4]
 
*Homework: Early course meetings (during project selection) specific homework assignments are given, each with its own deliverable. [LO: 2,3,4]
 
*Project Checkpoint Presentations: Project teams will schedule presentations for each of the project check points.  These will be 10 minute, in-class presentations with content dependent upon the specific check point. [LO: 2,3,4,5,6]
 
*Project Checkpoint Presentations: Project teams will schedule presentations for each of the project check points.  These will be 10 minute, in-class presentations with content dependent upon the specific check point. [LO: 2,3,4,5,6]
 +
*Poster Presentations: Teams produce a poster and participate in a poster presentation session [LO: 4,5,6,7]
  
 
=== Course Outline ===
 
=== Course Outline ===
[http://users.dickinson.edu/~braught/courses/cs491f16/cs491f16.html COMP491 at Dickinson College Fall 2016]
+
[http://users.dickinson.edu/~braught/courses/cs491f17/cs491f17.html COMP491/492 at Dickinson College - AY 2017-18]
  
 
=== Notes to Instructor ===
 
=== Notes to Instructor ===
''Will fill in as first course offering progresses''
+
*There is a substantial number of marked assignments in this course (daily attendance, participation and engagement (PAE), blog posts, assignments, project checkpoints, presentations, papers, posters, etc).  It can be challenging to keep up and provide quality feedback to everyone. Using class time to provide general feedback to everyone has been an effective strategy.
 +
*Discussion classes were managed by having students post questions that they would like to discuss to a forum. The instructor then reviewed these questions and formed discussion questions for the class meeting.  The class was broken into small groups (4-5) that discussed the questions and then reported out to the larger group.
 +
*A Slack plug-in that sends post data (e.g. number of posts per day) through google analytics.  This provides a convenient mechanism, in additional to reviewing Slack channels, to check that teams are working consistently across time.
 +
*Project Install (User / Developer) can be easy for some teams and difficult for others.  If teams go beyond about two weeks, the instructor spent time debugging the installation process and helping the team to get up and running.  This has frequently led to student teams contributing updated installation documentation back to the project.
 +
*The Bug Gardening exercise is easily time-boxed into two weeks or less.
 +
*The Bug Fix exercise extends through the remainder of the year for most teams.  Though those that complete one bug fix are able to work with their community to define a new contribution.
 +
*The biggest challenge for students is to become comfortable knowing when and how to ask questions of their communities. This is also in my experience the largest area of growth for students across the course with most becoming active members of their H/FOSS communities by the end of the course.
  
 
=== Moving Forward ===
 
=== Moving Forward ===
''Will fill in as first course offering progresses''
+
Overall this course has been successful. Revision plans for the next offering include:
 +
*Revision of the git version control exercises
 +
*Revision of the completion criterion for the developer install to include:
 +
**Producing a VirtualBox appliance for contribution back to community.
 +
**Demonstrating a change in the primary language of the project that requires a rebuild from source.
 +
**Adding trivial test cases, one that passes, one that fails.
  
 
--------------------
 
--------------------
This work is licensed under a
+
{{License CC BY SA}}
[http://creativecommons.org/licenses/by-sa/4.0/ Creative Commons Attribution-ShareAlike 4.0 International License]
+
 
+
[[File:CC_license.png]]
+
  
 
Materials linked to by this page may be governed by other licenses.
 
Materials linked to by this page may be governed by other licenses.
  
[[Category:Course]]
+
 
 +
[[Category:Courses]]
 
[[Category:Capstone]]
 
[[Category:Capstone]]
[[Category:WorkInProgress]]
+
[[Category:Work in Progress]]

Revision as of 14:45, 8 September 2018

Contents

Overview

Course Computer Science Senior Seminar
Institution Dickinson College
Instructor(s) Grant Braught, Dickinson College
Term First offered as COMP491/492 in Academic Year 2016-17 at Dickinson College. Revised for the 2017-18 Academic Year.
Course Overview A two-semester required senior capstone including perspective on and experience with H/FOSS projects. In the first semester students complete readings, exercises and activities that familiarize them with H/F/OSS philosophy/community/tools. They complete exercises to help them select an H/FOSS project in which to participate and form teams. They then begin a series of exercises that include: Installing the project as a user; Installing the project as a developer; Rebuilding the project from source; Running the test suite; Verifying bugs from the issue tracker (Bug Gardening); and Fixing bugs. During the second semester students continue work on their selected H/F/OSS project fixing bugs and proposing additional contributions to the project that have value both to them and their H/FOSS community. Students also complete readings on contemporary and ethical issues in computing and participate in class discussions on these topics.
Course Length Two 14-week semesters.
Student Characteristics Typically offered to 10-20 senior computer science majors per year.
Prerequisites This course was designed for use in the final year of a Computer Science major at a small liberal arts college. Students having completed the first three years of an undergraduate CS curriculum should be well prepared for this course. Our students typically have completed the core courses and are competent in: Object Oriented Programming (2 courses in Java), Data Structures (in Java), Analysis of Algorithms, Programming Languages (including C/C++, Python, Scheme, Prolog), Organization and Architecture. They may also have completed additional electives (e.g. Operating Systems, Networking, AI, Databases) and other core courses (e.g. Theory of Computation).
Infrastructure The course outlined below assumes 28 75-minute course meetings (2 per week) per semester, plus a 3-hour final exam period. Students are expected to average between 8 and 12 hours of work outside of class per week.

Many of the activities and assignments rely on the use of particular technologies. These can be substituted with equivalent technologies but are currently:

  • Virtual Box
  • Ubuntu 16.04
  • Slack
  • Moodle (Wiki/Forums)


Learning Objectives

Students will:

  1. Recognize the ethical, legal and social implications of computing.
  2. Be exposed to H/F/OSS and Software Engineering topics.
  3. Improve their ability to work (reading/modifying/testing) within a substantial existing code base.
  4. Interact with a community of developers and users.
  5. Deepen their ability to write clearly and develop their mastery of specific forms of disciplinary writing.
  6. Be prepared for graduate study or a professional career in computing.

Methods of Assessment

The following assessment mechanisms will be used:

  • Forum Postings: Students will post (in Moodle) discussion questions based on reading assignments to guide the subsequent in-class discussion. [LO: 1,2,6]
  • Reflective Writing:
    • Following each discussion students complete a reflective blog entry clarifying and/or expanding their understanding of the material. [LO: 1,2,5,6]
    • Each week of project work teams summarize actions, accomplishments, existing challenges and proposing work for the following week on thei team wiki. [LO: 3,4,5,6]
  • Live-Texting: Students will live-text (using Slack) while working on the projects as documentation of their efforts. [LO: 3,4]
  • Completion Criterion Meetings: Each project activity (User Install, Developer Install, Bug Gardening, Bug Fix) have completion criterion. Teams schedule a meeting with the instructor to demonstrate that they have been met. [LO: 5,6]
  • Homework: Early course meetings (during project selection) specific homework assignments are given, each with its own deliverable. [LO: 2,3,4]
  • Project Checkpoint Presentations: Project teams will schedule presentations for each of the project check points. These will be 10 minute, in-class presentations with content dependent upon the specific check point. [LO: 2,3,4,5,6]
  • Poster Presentations: Teams produce a poster and participate in a poster presentation session [LO: 4,5,6,7]

Course Outline

COMP491/492 at Dickinson College - AY 2017-18

Notes to Instructor

  • There is a substantial number of marked assignments in this course (daily attendance, participation and engagement (PAE), blog posts, assignments, project checkpoints, presentations, papers, posters, etc). It can be challenging to keep up and provide quality feedback to everyone. Using class time to provide general feedback to everyone has been an effective strategy.
  • Discussion classes were managed by having students post questions that they would like to discuss to a forum. The instructor then reviewed these questions and formed discussion questions for the class meeting. The class was broken into small groups (4-5) that discussed the questions and then reported out to the larger group.
  • A Slack plug-in that sends post data (e.g. number of posts per day) through google analytics. This provides a convenient mechanism, in additional to reviewing Slack channels, to check that teams are working consistently across time.
  • Project Install (User / Developer) can be easy for some teams and difficult for others. If teams go beyond about two weeks, the instructor spent time debugging the installation process and helping the team to get up and running. This has frequently led to student teams contributing updated installation documentation back to the project.
  • The Bug Gardening exercise is easily time-boxed into two weeks or less.
  • The Bug Fix exercise extends through the remainder of the year for most teams. Though those that complete one bug fix are able to work with their community to define a new contribution.
  • The biggest challenge for students is to become comfortable knowing when and how to ask questions of their communities. This is also in my experience the largest area of growth for students across the course with most becoming active members of their H/FOSS communities by the end of the course.

Moving Forward

Overall this course has been successful. Revision plans for the next offering include:

  • Revision of the git version control exercises
  • Revision of the completion criterion for the developer install to include:
    • Producing a VirtualBox appliance for contribution back to community.
    • Demonstrating a change in the primary language of the project that requires a rebuild from source.
    • Adding trivial test cases, one that passes, one that fails.

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

CC license.png


Materials linked to by this page may be governed by other licenses.

Personal tools
Namespaces
Variants
Actions
Events
Learning Resources
HFOSS Projects
Evaluation
Navigation
Toolbox