Lectures
TRF 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
  • Tuesdays: 2 - 3:30pm
  • Thursdays: 2 - 3:30pm
  • Fridays: 11am - 12pm
  • (and by appointment)

Objectives

By the end of the course, you will have:

  • Completed a large software development or computer science research project.
  • Developed and practiced your technical reading, writing and presentation skills.
  • Identified stakeholders of various computing-related technologies, examined the limitations of these technologies, and proposed strategies for mitigating their impact on society and the environment.

Coursework

Your work in this course primarily consists of (1) reading case studies, (2) creating and delivering presentations about a case study and (3) working on & communicating your project.

  1. Case Studies. We will discuss various topics related to responsible computing, which will be framed by selected case studies (from the MIT Schwarzman College of Computing). In a given class devoted to a case study (listed in the Calendar), two people will present the case study and lead a discussion in class.
    When you are presenting, you will:
    1. Prepare a presentation about the case study. About 10 minutes should be devoted to summarizing the reading and the rest of the class period should consist of a discussion and a thought experiment. The thought experiment should involve designing or redesigning a component of an app that already exists (ideally, related to the topics in the case study).
    2. Post a preliminary discussion question on the Slack #case-studies channel at least 48 hours before class. This question can be about a topic related to the case study or to get your classmates to pre-emptively think about the in-class thought experiment.
    When you are not presenting, you should (1) react to the Slack post (๐Ÿ‘) to acknowledge receiving the message, (2) read the case study and (3) prepare for the discussion. I will lead the first discussion. Everyone will deliver 1 case study presentation during the semester.
  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 in the last week 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.

Grade adjustments may also be the result of a poor in-class attendance record. Since this class involves a lot of discussions and in-class group work, you are expected to attend every class. Of course, I completely understand if you cannot make it to class for medical reasons or conference travel. Please send me an email if you need to miss class.


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 semester 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.


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. Whatever the class agrees upon will be what gets filled in here (3/7/2025: updated AI policy is now included below).

The use of generative AI for CSCI 701 projects is permitted under the following conditions:

  • All group members are aware of, and agree to the use of generative AI to solve a particular problem.
  • AI tools can be used to debug, understand concepts, help with syntax, and generate small snippets of code, but may not be used to write the entire code for larger algorithms.
  • Any use of AI should be clearly documented (tool, prompt and response) in any PR that contains AI-generated code.