View on GitHub

COMP 290

Large-scale and Open Source Software Development - Dickinson College

COMP 290-01 Syllabus

Course Description

An introduction to large-scale software development through participation in a Humanitarian Free and Open Source Software (HFOSS) project. Readings and discussions will focus on FOSS and HFOSS philosophy, licensing, communication tools, project and community organization, and software engineering topics related to large-scale software development. Case studies of social, legal and ethical issues raised by computing and computing for the greater good will complement participation in the HFOSS project.

Prerequisite Knowledge:

This course assumes basic competency in object oriented programming, Linux/Unix command line, version control (git/GitHub), and open source project experience. The nominal prerequisites for this content at Dickinson are COMP 132 - Principles of Object-Oriented Design and COMP 190 - Tools and Techniques for Software Development.

Course Schedule

Assignment details including due dates and topics are indicated on the Course Home Page:

Textbook

All of the materials for COMP 290 are open educational resources and will be provided via links on the course schedule.

Learning Goals

Students will:

Community and Inclusivity

All members of this class are equally valued members of our course community. The instructor aims to create an inclusive atmosphere in which we can listen and speak in ways that are respectful of each other and our diversity of heritages, identities, experiences, knowledge and views. All questions will be accepted and treated with kindness.

Some topics will push us to develop new ideas and opinions about things we may not have thought about before. The instructor aims to promote a generous atmosphere. One where we listen and speak to understand. One where all are given the benefit of the doubt as they try out new and partially formed thoughts and opinions. One where we respond to and critique statements and ideas, not individuals.

If you feel at any time that these ideals are not being met or have ways that our course atmosphere can be improved you are encouraged to reach out to the instructor. In cases where talking with the instructor is not comfortable please contact your advisor, the Department Chair or another trusted College official for guidance.

Communications

All communications outside of in person meetings will occur via Teams, Zulip or GitHub. Communication in public channels (Zulip/GitHub) is preferred. However, sensitive conversations should be initiated as a private chat on Teams. Please do not send e-mails.

Office Hours

A list of my office hours and availability is provided on my home page (https://users.dickinson.edu/~braught/). If you have conflicts with my regularly scheduled office hours or would like to schedule a separate meeting please message me on Teams. Please do not send e-mails.

Time Commitment

You should allocate 3-4 hours per week outside of class for this course. Some weeks will require less. Others may require more, particularly if you encounter difficulties. Please allocate enough time in your schedule for work on this course. This is expectation is consistent with Dickinson’s standard that “at least three hours of study accompany each class period”.

If you find that you are spending significantly longer than the expected time to complete the required work, please reach out to your instructor to discuss strategies for reducing the time required.

Course Structure

This course is divided into three sections “Web Development with Vue.js”, “FarmData2 Onboarding” and “FarmData2 Project Work”. Each of those sections contains technical work and a reading and discussion period. In addition there will be one Writing in the Discipline (WiD) assignment given during the semester. More details are given in the following sections.

Web Development with Vue.js

This section of the course provides the foundational knowledge and skills necessary for contribution to the FarmData2 project. You will complete a set of tutorials that introduce you to the basics of web development and Vue.js while building independent learning skills that are essential in computing. Each tutorial is followed by an extensions that gives you practice applying the material from the tutorial. In addition, the extensions gradually introduce the use of AI tools into the software development process. Reflecting on the impact of these AI tools on both your work and your learning helps to develop habits of responsible AI use.

FarmData2 Onboarding

This section of the course introduces you to FarmData2 and orients you to the codebase. A set of activities guide you through the creation of a small feature. This process highlights each part of the FarmData2 architecture, illustrates how they fit together and provides experience working in a large code base.

FarmData2 Project Work

In this section of the course you will work in teams to make contributions to the FarmData2 project. The issues and features that you work on will be drawn from the live project. Teams producing high quality solutions will be encouraged to make pull requests to propose their work for merging into the live project.

Readings & Discussions

Our readings and discussions will focus topics important to open source, software engineering and contemporary social/legal/ethical issues in computing and will vary from semester to semester. Readings and a set of discussion questions will be posted one week in advance of the discussion. You are expected to do the readings, prepare notes to aid your participation and to contribute to the discussion. Additional details will be provided with the reading assignments linked in the course web site.

Writing in the Discipline (WiD)

This course is part of the WiD thread through the Computer Science major. There will be one assignment given during the semester that requires you to commit something that you have written to your WiD repository. The details of the WiD assignment will be given in an assignment linked in the course schedule.

Grading

The COMP 290 course is graded as a Credit/No Credit course (see Dickinson’s Academic Policies and Procedures). The sections below explain how each component of the course is scored and what is required to receive credit for the course as a whole.

If at any time you receive a score that you feel does not accurately reflect the quality of your work discuss it with the instructor.

Tutorials, Extensions, and Onboarding

Each tutorial, extension and onboarding assignment will be submitted by making a Pull Request on GitHub. Each tutorial, extension and onboarding pull request will be assigned a score using the following criteria.

Score Criteria
3 The submission is correct, complete, and follows the workflow steps.
2 Nominal score (neither 3 nor 1).
1 The submission is incorrect, missing multiple elements, and/or does not follow the workflow steps.
0 Submission is missing or late.

Pull requests that are submitted late will receive only a cursory review and will receive a maximum score of 1.

Class Engagement

A class engagement score will be assigned using the following criteria for each class meeting in which you are completing technical work (e.g. extensions, onboarding or project work).

Score Criteria
3 Observed as fully and actively engaged throughout the class period.
2 Nominal score (neither 3 nor 1).
1 Observed repeatedly as disengaged during the class period.
0 Absent.

Reading & Discussion

A reading and discussion scores will be assigned using the following criteria for each class meeting in which we have a discussion.

Score Criteria
3 Clearly well prepared.
Contributed meaningfully to discussion.
Submitted thoughtfully prepared notes.
2 Nominal Score (neither 3 nor 1).
1 Present and attentive.
Did not make meaningful contributions to discussion.
Did not submit adequate notes.
0 Absent.

Project Work

A project work scores will be assigned each week using the following criteria.

Score Criteria
3 There is clear evidence that the student made essential contributions to the team’s accomplishments this week.
2 Nominal score (neither 3 nor 1).
1 Evidence suggests that the student made minimal contributions to the team’s accomplishments this week.
0 There is clear evidence that the student did not contribute to the team’s accomplishments this week.

Note:

Writing in the Discipline (WiD) Assignment

A score of 2 or 3 is required to receive credit for the WiD assignment toward completion of the Computer Science WiD requirement. A submission receiving a score of 1 may be revised and resubmitted after seeking feedback from the instructor. If adequate revision is made the score will be adjusted to a 2. Specific criteria for the score will be provided with the assignment.

Course Credit

When determining course credit:

To receive course credit the averages of the remaining scores for each of tutorials, extensions and onboarding, class engagement, reading and discussion, and project work must be greater than or equal to 2.00, and a submission must have been made for the WiD assignment.

Academic Integrity

Please take the time to read the Academic Misconduct section of Dickinson’s Community Standards. Violations of this policy are considered serious transgressions, so you should be especially certain that you understand your rights and responsibilities under it. Students suspected of academic dishonesty will be subject to the process outlined in the Student Conduct pages.

The specific policies for COMP290 are detailed below. If you are unsure about whether or not certain kinds of collaboration or sources are permissible on an assignment or in this course, ask your instructor.

Collaboration

All tutorials, extensions, onboarding assignments and the WiD assignment are individual. Each student must create and submit their own solution. Constructive conversation that facilitates learning is acceptable and encouraged. However, the sharing or receiving of full or partial solutions from others is not permitted.

Project work is team based. Teammates are expected to fully collaborate with and assist their own teammates. All work submitted must be the work of individuals on the team. Sharing or receiving of full or partial solutions to assignments from outside the team is not permitted.

Use of AI

For tutorials only inline autocompletion may be used. AI tools may be used in extensions only in the ways that are explicitly described in the extension. All of AI tools introduced may be used during the project work so long as the work complies with the AI Policy of the FarmData2 project. Permissible uses of AI for the WiD assignment will be described in the assignment linked from the course schedule.

Intellectual Property Rights

Audio or video recording of class meetings, lectures or discussions is prohibited without explicit permission of the instructor. Photographic records of whiteboards, projected slides or other visual media is also prohibited without explicit permission of the instructor. In any case where audio/video/photographic records are provided or permission is given for them to be made they are for personal use only. They may not be shared or redistributed and must be destroyed at the end of their usefulness or within one week following the termination of this course, whichever comes first. Similarly, any redistribution of sample code, homework solution sets or provided lab code is prohibited. Please note that all outside materials used in the course (readings/tutorials/assignments/projects/etc) are also be governed by their own licensing and copyright agreements.

Accommodating Students with Disabilities

Dickinson values diverse types of learners and is committed to ensuring that each student is afforded equitable access to participate in all learning experiences. If you have (or think you may have) a learning difference or a disability – including a mental health, medical, or physical condition – that would hinder your access to learning or demonstrating knowledge in this class, please contact Access and Disability Services (ADS). They will confidentially explain the accommodation request process and the type of documentation needed to determine your eligibility for reasonable accommodations. To learn more about available supports, go to www.dickinson.edu/ADS, email access@dickinson.edu, call (717)245-1734, or go to the ADS office in Room 005 of Old West, Lower Level (aka “the OWLL”).

If you’ve already been granted accommodations at Dickinson, please follow the guidance at www.dickinson.edu/AccessPlan for disclosing the accommodations for which you are eligible and scheduling a meeting with me as soon as possible so that we can discuss your accommodations and finalize your Access Plan. If you will be using any test-taking accommodations in this class, be sure to enter all test dates into your Access Plan in advance of our meeting. ADS will be happy to provide any assistance you may need.

Accessibility

The room in which this class meets and my office are both located on the second floor of Tome Hall. Tome Hall has an elevator that is located to the left of the stairs inside the main building entrance. If you require the use of an elevator to access the second floor, please let me know, and be sure that ADS (access@dickinson.edu) knows as well. If there is ever a malfunction with the elevator, we will be notified by email, and I will consult with ADS to identify our options for that day.

SOAR: Academic Success Support and More

SOAR stands for Strategies, Organization, & Achievement Resources, and students can find a wealth of strategic academic success tools (like weekly planners, semester calendars, and much more) at www.dickinson.edu/SOAR or by going to Old West’s Lower Level (aka “the OWLL”). Online or in person, you’ll find useful resources related to organization, study skills, memory strategies, note-taking, test-taking, etc. If you’d like to attend a SOAR workshop or request one-on-one assistance with developing a strategy for a manageable and academically successful semester, email SOAR@dickinson.edu, or go to the OWLL to SOAR!

Life Happens

Sometimes stuff just happens. Sometimes it is an unexpected sudden event such as an illness or family emergency. Other times it may be an ongoing issue or concern or an accumulation of smaller issues. Any of these things may affect your (or my) ability to focus or perform up to your (or my) potential through no shortcoming or fault of your (or my) own. Dickinson and this course provides a kind and caring community and we want to see you achieve at your full potential. So, if you are experiencing life events that are affecting your performance please don’t hesitate to talk to your instructor, your advisor or a member of the CARE Team. They will all be willing to talk with you, help to formulate a plan and/or connect you with others that may be able to assist. That said, it is still always best to contact the instructor in advance if you are going to miss a class meeting or an assignment due date. I will similarly communicate to you any issues that I am facing in advance and we will adapt.