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:
- https://dickinson-comp-290.github.io/website/
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:
- acquire concepts and skills necessary for large-scale and Free and Open Source Software (FOSS) development including software processes, FOSS philosophy and licensing, community structures and communication mechanisms.
- deepen their understanding of social and ethical issues in computing and appreciation of computing for the greater good.
- [WiD goal] develop their ability to write effectively in the context of a software development team.
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 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.
Course Structure
The first part of the course (approximately 3/4 of the semester) will be devoted to learning web development with HTML/CSS and Vue.js, and onboarding to the FarmData2 project. This part of the course will be run as a combination of readings and class discussions, completing on-line tutorials, working on hands-on activities in class, and applying what you learn in homework assignments. The second part of the course (the final 1/4 of the semester) will be devoted to building a feature in the FarmData2 project.
Time Commitment
You should allocate 3-4 hours per week outside of class for this course. Some weeks will require less. Others, if you encounter difficulties, may require more. Please allocate enough time in your schedule for work on this course. This is consistent with Dickinson’s standard that “at least three hours of study accompany each class period”.
The readings, tutorials and homework assignments to be completed outside of class are targeted to take approximately the following amount of time:
- Readings (20 - 30 minutes)
- Tutorials (60 - 90 minutes)
- Homework (90 - 120 minutes)
If you find the activities are taking significantly longer than the expected time, please reach out to your instructor to discuss strategies for reducing the time required.
Readings & Discussions
A short reading on an open source, software engineering or contemporary social/legal/ethical issues in computing will be assigned prior to most class meetings. The class meeting will begin with a class discussion of that reading. You are expected to do the readings in advance and come to class prepared to contribute to the discussion. Note that while everyone is expected to prepare for and be engaged during every discussion, it is not required that everyone contribute to every discussion. However, you are expected to contribute regularly enough to demonstrate you are preparing and engaging with the materials. Students who are failing to demonstrate sufficient engagement or participation will be given updates and suggestions for improvement.
To prepare for class discussions you might:
- Identify the main terms that are defined in the readings and any questions you have about them.
- Identify the main points that are made by the reading.
- Think about your position on any controversial or unsettled issues that are raised in the reading.
- Note things that you found interesting and prepare questions about them that you may want to ask your classmates.
Tutorials
On-line tutorials will be used to introduce new technologies. Each tutorial will guide you through the construction of some small artifact using the technology being learned. Following these tutorials will help you to develop the type of independent learning skills that are a necessity in computing.
In-Class Activities
In-class hands-on activities will build upon the learning from the tutorials that were completed prior to class. They will add content and challenge you to apply what you learned in different ways. These activities will help you to generalize what you have learned from the tutorials.
Homework Assignments
The homework assignment for a topic will follow the in-class activities. These assignments are less structured and are designed to give you practice applying what you have learned in the tutorials and expanded and generalized in the in-class activities. The homework assignments build upon each other to create a prototype for a feature in FarmData2.
The instructor’s solution to each homework will be given as starter code for the next homework assignment. You will then complete the homework beginning from the starter code. Working from the given solution rather than from your own prior solution gives practice with reading and adapting code written by others, a skill that is essential in large scale software development.
Project Work
The final part of the semester will consist of team project work on part of a full feature in FarmData2. The full feature will be decomposed into smaller tasks, with each task being assigned to a different team. Each team will be responsible for implementing and testing the portion of the feature that is assigned to them.
During this portion of the course it is expected that each team member will participate in a weekly teem meeting during the class period. In these meetings the team will summarize what they have accomplished during the week, anything they are stuck on, and what they plan to accomplish during the next week. It is the team’s responsibility to organize its work such that each team member has can make a demonstrable contribution to the work each week.
Writing in the Discipline (WiD)
This course is part of the WiD thread through the Computer Science major. There will be one assignment given between the first and second part of the course where you will review a Pull Request (PR). Reviewing pull requests are a regular part of the work of project maintainers and team members.
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.
Class Engagement
A class engagement score will be assigned for each class meeting. This score will include engagement in the discussion of any assigned readings as well as participation in the day’s hands-on activities.
Class Engagement scores will be assigned as follows:
Score | Criteria |
---|---|
3 | Observed as fully and actively engaged in both discussion and in-class activities. |
2 | Nominal score (neither 3 nor 1). |
1 | Observed as repeatedly inattentive or disengaged during discussion or in-class activities. |
0 | Absent |
Tutorials and Homework
Each tutorial and each homework assignment will be submitted by making a Pull Request on GitHub. Your PR will be reviewed and will receive feedback and a score reflecting the quality, completeness and timeliness of the submission.
Tutorial and Homework scores will be assigned as follows:
Score | Criteria |
---|---|
3 | The submission is easily determined to be correct, complete, and is broken in to logical commits. |
2 | Nominal score (neither 3 nor 1). |
1 | The submission is missing multiple elements of the assignment and/or the commits do not sufficiently demonstrate an incremental development of the solution. |
0 | Submission is missing or late. |
Notes:
- Neatness, organization, and readability of the code, as well as consistent naming conventions and choice of appropriate program structures contribute heavily to the ability of the instructor to easily determine the correctness and completeness of a submission. Think about writing your code for another human reader rather than simply to make it work.
- Completing work on time is an important professional disposition and is is respectful of your instructor’s time. Thus, late work will not be accepted.
Homework Resubmission
If you receive a score of 1 or 2 on a homework assignment you may resubmit within 1 week of receiving feedback. To resubmit, make changes to your code that address the feedback, commit the changes to your feature branch and push it to your origin to update your PR. Resubmission is not required. But if your resubmission is sufficient your score will be raised by one level (i.e. from 1 to 2 or from 2 to 3). Note that only homework may be resubmitted, tutorials may not be resubmitted.
Writing in the Discipline (WiD) Assignment
The WiD assignment score will be assigned as follows:
Score | Criteria |
---|---|
3 | The PR review clearly and concisely addresses all key issues and would be very helpful to the contributor in improving the PR. |
2 | Nominal score (neither 3 nor 1). |
1 | The PR review misses multiple key issues and/or would require significant clarification before it would be helpful to the contributor in improving the PR. |
0 | Submission is missing or late. |
Notes:
- A score of 2 or 3 is required to receive credit for this assignment toward completion of the Computer Science WiD requirement.
- A PR Review 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.
Project Work
Project work scores will be assigned as follows:
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:
- Evidence of contribution may come from participation in the discussion during the team meeting, attestations from teammates about contribution, activity in the discussion of the team’s issue(s) or pull requests in GitHub, interaction with the instructor outside of class, and/or commits to the team’s repository.
Course Credit
When determining course credit:
- the lowest two scores for class engagement, tutorials and homework will be dropped.
- the lowest score for project work will be dropped.
With those scores dropped the average score for each of class engagement, tutorials, homework, 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
Tutorials, homework and the WiD assignment are individual assignments. All work submitted must be your own work. Sharing or receiving of full or partial solutions to assignments is not permitted.
The hands-on in-class activities are not collected or assessed (apart from the Class Engagement score). Students are encouraged to collaborate on these activities in pairs or small groups.
Project work will be team based. All work submitted must be the work of individuals on the team. Sharing or receiving of full or partial solutions to assignments is not permitted.
Use of AI
AI coding assistants are now an integral part of a software developer’s tool kit. An AI assistant will be introduced in this course. After its introduction students will be permitted to use it on any assignment. It can be used to dialog ideas, concepts, program statements to better understand them as well as to perform code completion or code generation. Opportunities will be given to discuss your uses of the AI assistant and to share what you have found useful and not useful.
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 __S__trategies, __O__rganization, & __A__chievement __R__esources, 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.