Lectures
MWF 09:45-10:35
75 Shannon Street room 206
Instructor
Philip Caplan
  • Please call me Philip. My pronouns are he/him/his.
  • 75 Shannon Street, room 219
  • (802) 243-5707
  • pcaplan@middlebury.edu
Office Hours
  • Monday: 1:30 - 2:30pm
  • Tuesday: 11am - 12pm
  • Wednesday: 3:30 - 4:30pm
  • Thursday: 11am - 12pm
  • For 701: Wednesday & Friday: 9 - 9:45am
  • (and by appointment)

Objectives

By the end of the course, you will have:

  • Completed a large software development or computer science research project.
  • Practiced your technical reading, writing and presentation skills.
  • Surveyed topics related to responsible computing and the impacts of computer science on society.

Coursework

Your work in this course primarily consists of (1) reading book chapters & articles, (2) creating and delivering presentations about a chapter/article and (3) working on & communicating your project.

  1. Readings & Reading Presentations. We will discuss various topics related to responsible computing. In general, these will be framed by readings from a book called System Error, but some topics will be drawn from research articles or films. You do not need to read all of System Error. In a given class (see Calendar for details), two people will present a chapter/article and lead a discussion in class. When you are presenting, you will:
    1. Post a reading guide on the Slack #reading channel at least 72 hours before class. You should read the entire chapter/article but you may want to only ask the rest of the class to read a subset of the sections. The Slack post should also include a prompt to allow others to prepare for the in-class discussion.
    2. Prepare a presentation about the chapter/article. About 15 minutes should be devoted to summarizing the reading and the rest of the class should consist of a discussion and/or activity to engage the class. Please plan on preparing about 3 discussion questions.
    When you are not presenting, you should (1) react to the Slack post (๐Ÿ‘) to acknowledge receiving the message, (2) read the sections in the reading guide and (3) prepare for the discussion. I will lead the first discussion on Chapters 1 & 2. Everyone will deliver 1 reading presentation during the semster, except for one group (they will present 1 short reading + 1 video).
  2. Large software development or research project. You will work in a group of 3 (maybe 2 depending on the class size) on a large software development project throughout the semester, which may be research-focused. We will discuss some techniques for managing your project in the first few weeks. On most Fridays, you will give a 1-minute update (Standup) on your project and proceed to close any Issues from the last week and open a new one with a plan for the coming week. Roughly every month you will (1) Pitch, (2) provide Background and (3) Demo your project in the form of a presentation (with slides). Finally, your project "Launch" will consist of a poster session open to the CS Department on the last Friday of the semester. Please see the posters in 75 Shannon Street for examples of previous 701 projects. There are also some posters here.
  3. Effective technical communication. We will discuss techniques for effectively communicating technical work including writing, presentations, posters and graphics. Your final project presentation (demo) and documentation should incorporate some of these topics.

Grading

We will be using an "ungrading" model for this course. This means I won't assign points to your deliverables, whether it be code, writing or presentations. I will provide feedback on your work so you can continue to improve in your presentations and project.

However, I still need to assign a letter grade at the end of the semester. During the Final Exam week, you will submit a reflection on the course; we will then meet 1-1 and you will let me know what grade I should enter in Banner. In most cases, I will enter the grade you reported, however, I may make minor adjustments after reading all reflections and self-evaluations.


Tools

We will primarily use GitHub and Slack. There won't be much on Canvas - it might only be used for submitting links to your assignments, as well as your reflection at the end of the semester.

Our GitHub Team is located here (you will have access in the second week after I add all members). This is where your project will be hosted (as well as some of the starter exercises). When the semster is over, you are free to move your repository to your personal account, but please work on your project within our Team during the semester. We will make use of certain features for private repositories via the Teams subscription, notably branch protections, required reviewers and some additional CI/CD minutes.

Please join our Slack workspace here. I ask that you be respectful of your peers on Slack. It's sometimes difficult to convey humor in a text message, so please be mindful of how your messages might be interpreted. This will be our primary form of communication. Private messages in Slack or email should only be used for personal matters. I will check our Slack channels during regular working hours (M-F 9am-5pm).

Please bring a computer to every class. Some lectures & discussions may be shorter than others so we will use any remaining class time to work on your project.


Materials

Most resources (slides, links, forms) will be posted on the Calendar so please check this website regularly.

The only book you need is System Error. I personally read the Kindle version ($13.99 on Amazon). If you'd like a paper copy, please order one soon so it arrives in time to prepare for the first discussion about Chapter 3 on September 27th (you are not required to read the book for the first discusson on September 13th). The CS Department can purchase the book for you to borrow (paper copies only) - please let me know in the System Error Form if you would like a copy ordered for you.


Expectations

Environment

My goal is to create an inclusive and welcoming learning experience for everyone. I try to use language, examples and exercises that promote a sense of belonging to the field of computer science, but please let me know if there is anything I can do to improve.

Furthermore, creating such an environment is a team effort, so I expect you to join me in fostering an inclusive learning experience for everyone. Every member of the class is expected to show respect for every other member so that everyone can learn in this space. If you experience or witness any behavior that opposes this idea, it would be helpful for me to know so that I can address it. If you feel comfortable, you can report such incidents in the following ways:

  • talk to or email me,
  • report the incident to our anonymous CS departmental climate feedback form,
  • fill out a Bias Incident Report which goes to the Middlebury Community Bias Response Team.

You belong in this class and in the computer science department. Thank you for being here and for contributing to this course.


Policies

Academic Accommodations

Students with documented disabilities who believe that they may need accommodations in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through Student Accessibility Services. Please contact the ADA Coordinator Jodi Litchfield, who can be reached at litchfie@middlebury.edu or 802-443-5936 for more information. All discussions will remain confidential.

Title IX

As faculty members and members of the Middlebury community, we are committed to the safety of all students. If we learn of any potential violation of our Policy Against Sexual Misconduct, Domestic and Dating Violence and Misconduct, and Stalking ('SMDVS Policy') or our Anti-Harassment/Discrimination Policy, we are required to notify a member of Middlebury's Title IX team (policies summary). This ensures that students receive timely care and information about their rights, their choices, and available resources for support. Students who would like to speak with a confidential resource who does not have an obligation to report can contact MiddSafe, the Patron Center for Health and Wellness, WomenSafe (serving individuals of all gender identities), or campus and local clergy and medical professionals. For more information, see go/sexualviolenceinfo.

Borrowing a Laptop

If you ever find yourself temporarily in need of a laptop, the Computer Science department has 10 rotating Dell laptops available to our students. These come pre-installed with software for most of the courses in the major. They are available to be loaned out short-term or long-term based on your need (as determined by you). Feel free to ask me ahead of time if you think you need one for just a class period, or you can send an e-mail to Smith Gakuya: sgakuya [at] middlebury.edu directly. On Long-Term Use: College policy has changed recently to include the expectation that every student have a laptop available. The college provides laptops to those who need them where โ€œneedโ€ is based on Student Financial Services calculations. If you anticipate needing a laptop for the whole term, we encourage you to inquire with Student Financial Services and the library first due to our smaller pool of equipment. However, our department commits to meeting the needs of every student, so do not be afraid to reach out if you believe you need one of our laptops for any length of time.

Honor Code

You are expected to maintain the highest level of academic integrity in this course. All assignments should be purely the work of you and your group. Any external resources should be cited appropriately. It's okay to use someone else's code (e.g. as a dependency in your project) but you must describe (in your documentation) how you used their code.

Use of Generative AI

I think we should discuss what is and what is not allowed in this class with regards to the use of generative AI tools such as ChatGPT, GitHub Copilot, to name a few. Therefore, we're going to talk about what should be allowed during one of the discussions in Week 3. Whatever the class agrees upon will be what gets filled in here. (Updated statement below)

The use of generative AI tools (such as ChatGPT) is allowed when asking conceptual or quick programming questions, as long as the results are cited. Each group should create a GitHub Issue in their project repository to track all the questions entered into one of these tools, including the responses received, and how the responses were adapted for use in the project. These tools may also be used to assist in code documentation and debugging, as long as the results are filtered for correctness and clarity. Please use discretion when providing data to one of these tools - all data provided as input to a large language model must be publicly available, and no personal information may be entered.