An online, always up-to-date version of this syllabus can be found online.

  • Instructor:
  • Course Website:
  • Weekly:
    • Mondays: Project Focus
    • Wednesdays: Discussion Focus
    • Synchronous and remote.
      • MW 5:10-6:25PM EDT (Middlebury Time)
  • Office Hours
    • Always by appointment:
      • Schedule a 15, 20 or 30-minute meeting with me. Calendly is a service that lets you drop a meeting on my calendar whenever I'm free. I will guarantee I can make anything with 24 hours notice, but I will try my best with anything sooner.
      • Message me in Slack and we can find a time to chat if those EDT business hours don't work for you.

Course Description

This senior seminar provides a capstone experience for computer science majors at Middlebury College. Through lectures, readings, and a series of two to three week individual and group assignments, we will introduce important concepts in research and experimental methods in computation. Examples will include: reading research papers; identifying research problems; dealing with big data; experimental design, testing and analysis; and technical writing in computer science. (Approval only).

CSCI 0701 Middlebury Course Catalog


The CSCI 0701 seminar is the capstone experience in the computer science major. At the completion of this course, you will have:

  1. Engaged in thoughtful discussions surrounding classical and contemporary computer science technologies, their applications, and their impacts on society.
  2. Completed a large, independent software development or computer science research project.
  3. Developed your technical reading, writing, and presenting skills.

In most class sessions:

  • Two of your classmates will present and lead a discussion around a classical or contemporary computer science research paper or article.
  • You will present, formally or informally, on your progress towards your capstone project.

Course Topics

In addition to a discussion of backend databases (as suggested by those who completed the pre-course survey) we will be selecting articles from a broad selection based on student interest.

Course Project

You will form groups of 1-2 students to complete a large, novel, implementation project. You will be responsible for choosing a topic, performing a thorough review of prior work, implementing the project, presenting your work to the class (both verbally and with a poster), and writing a technical report. During the semester you will be expected to maintain a project diary and give a presentation midway through the semester.

The project is composed of the following assignments:

  • Project Proposal
  • Preliminary Project Presentation
  • Final Project Presentation
  • Project Poster
  • Project Final Report and Final Code

Your project will be evaluated based on the following criteria:

  • Scope and difficulty: Was your project appropriately (or more so) ambitious? We will work together to make sure projects proposed are both feasible and challenging.
  • Planning: Did your proposal demonstrate comprehension of the problem and describe a reasonable approach to achieve your goals?
  • Execution: Did you make an appropriate effort (in both quality and quantity) to achieve your goals? Did you employ best-practices as relevant to your problem domain (including effective project management)? Did you appropriately contribute as a teammate?
  • Presentation: Did you effectively communicate your goals, methods and results in your presentations, poster and report?

When choosing a project you should aim to balance ambition with the likelihood of successfully achieving your goals. Perfect execution of a limited project may not result in a better grade than imperfect execution of a more ambitious project, but an impossible problem will be impossible to execute. Meeting your proposed deliverables is not a requirement - we can't always predict the obstacles we will face - but you are expected to make an appropriate effort to achieve your goals within the constraints of the course.

Adapted from Profs. Linderman and Grant.

Course Equipment & Software

Since this course will be run virtually we will need to use software in addition to the course-specific software we would ordinarily setup and use.

Computer / Laptop Access

If you have any questions about computer access, please don't hesitate to contact me ASAP - - there are options through both the College and Department. Some more details are below, but I'm happy to help you navigate these systems.

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. Please get in touch ahead of time if you think you might need one. Due to COVID-19, short-term loans may be trickier than usual.

On Long-Term Use: College policy has changed recently to include the expectation for every student to 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.

From Robert Lichenstein (rlichenstein@), lightly edited.

Zoom (emphasizing synchronous audio)

Our synchronous meeting times will be conducted over Zoom, where we will occasionally use breakout rooms or share screens but we will focus on working with concepts in a hands-on manner.


Slack is an online, real-time chat service commonly used in industry/etc. This will:

  • Provide a space for asking questions that is less formal than email and doesn't require a good Zoom connection.
  • Provide a long-lasting chat space, since Zoom chat disappears at the end of any specific call.
  • Provide the opportunity for students to have one-on-one or small group conversations given the course exists in virtual space this Spring.

You should receive an invitation to participate in a private Slack. I recommend downloading their application rather than using it in a web browser.

Mandated Technologies

The projects you complete may be with any programming language you have learned or is feasible for you to use. The only requirements I will enforce are practical, and that you use modern version control best-practices in your project.

Deadline Conflicts

The value in a schedule is not usually the exact hard deadlines but rather in ensuring that our learning proceeds together, at a reasonable pace. With your projects, teh deadlines provide a chance for self-reflection, identification of challenges where you and your group need help, or tasks that are more or less feasible than initially proposed.


Your overall grade in this course will be a combined grade from four sections:

  • 60%: Final Project
  • 15%: Paper presentations and discussion facilitations
  • 15%: Paper response questions
  • 10%: Class participation

Final Project: You will form groups of 2 students to implement a large and novel project. You will be responsible for choosing a topic, performing a thorough review of prior work, implementing the project, presenting your work to the class (both verbally and with a poster), and writing a technical report. You will give a prototype presentation midway through the semester and informal updates weekly.

Paper Presentations: You will present and lead the discussion of CS research papers and articles. For each paper you are responsible for:

  • Giving a 15 minute presentation about paper
  • Drafting 5 discussion questions
  • Initiating the class discussion

Paper Responses: Throughout the semester we will read several research papers and articles related to classical and contemporary technologies in computer science. For each paper, you will be responsible for summarizing the paper by identifying the problem the paper is addressing and the given solution, where applicable. One response score will be dropped (and you are not expected to respond when you are presenting).

Participation: This is a seminar course and so you are expected to participate regularly in class discussions, interview questions and other class activities. Therefore, attendance is extremely important.

Late Assignments: Late assignments, with the exception of discussion posts, will be accepted up to 24 hours after the due date, and penalized accordingly. Discussion posts will not be accepted after the due date (they are not useful after the class session in which we discuss the papers).

Academic Honesty at Middlebury

As an academic community devoted to the life of the mind, Middlebury requires of every student complete intellectual honesty in the preparation and submission of all academic work. Details of our Academic Honesty, Honor Code, and Related Disciplinary Policies are available in Middlebury’s handbook.

Middlebury College Syllabus Template retrieved 18 August 2020.

My personal take

When working on your final project, it is perfectly reasonable to consult public literature and other resources. However, you must reference any source that you draw on for your project. You may incorporate code from other sources as long as you give proper credit and abide by any licensing terms (e.g. including a copyright notice).

If you are ever unsure about how the Honor Code applies, please ask!

Lastly, I remind you that I have a PhD in search engines. If you can find it, I can find it, too. Just CITE it and tell me, and don't turn in something that is fully-quoted from any sources.

Universal Access & Accommodations

The Disability Resource Center (DRC) at Middlebury provides for student accommodation in courses.

The DRC provides support for students with disabilities and facilitates the accommodations process by helping students understand the resources and options available and by helping faculty understand how to increase access and full participation in courses. The DRC can also provide referrals for students who would like to undergo diagnostic testing. Students who are on financial aid and have never undergone diagnostic testing can apply to the CTLR for support to cover the cost of off-campus testing. DRC services are free to all students.

If you have any accommodations through this office, please notify the instructor as soon as possible at the start of the semester so that your accommodation can be supported as quickly as possible.

I try to create course materials with "Universal Design" in mind: that is, I try to make it so that all materials can be accomplished fairly by all students. If there is any change that can be made to the course materials that would improve your learning, don't hesitate to ask or suggest such changes.

Inclusivity & Discussions

It is important to me to create an inclusive learning environment where diversity and individual differences are respected and recognized as a source of strength. However, this must be a team effort so I expect you to join me in fostering such an environment. This class will represent a diversity of individual backgrounds and experiences, and every member 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, but I do recognize that this is additional work and may be difficult. If you are comfortable reporting such incidents, there are a few ways you can do so:

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

Pronouns and Identity

I will use your preferred gender pronouns and name, and I expect you to use the names and pronouns your classmates prefer. (I understand that some students may be in the process of exploring their gender identity, may not feel comfortable sharing a gender pronoun, or may not go by gender pronouns; you can let me know if you do not want to share a gender pronoun.)

If you are communicating about another student and do not know their pronouns, go ahead and use their whole name to refer to them e.g., -- "I agree with John.". You will notice that I also use they/them when referring to a hypothetical student.

Preliminary Project Schedule

This is quite a strange semester and time in the world -- this schedule represents my best guess about the future -- something will have to change. Check the online version for the latest; it will be kept up-to-date.

Date Notes Content? Project?
24-Mar Syllabus, Setup
1-Mar Project Brainstorming
3-Mar Papers 1
8-Mar Last day to drop online SQL & Flask
10-Mar Papers 2 Rough-Draft due Fri
15-Mar Git?
17-Mar Papers 3 Final Draft due Fri
22-Mar ?
24-Mar Papers 4
29-Mar Last day to drop with approval LaTeX
31-Mar Papers 5
4-Apr ?
6-Apr BREAK NO CLASS (R,F) Papers 6
12-Apr No large assignments due. Presentations Prototype Presentations
14-Apr Presentations
19-Apr ? Updated Deliverables / Rubric
21-Apr Papers 7
26-Apr ?
28-Apr Papers 8 Annotated Bib
3-May No-classes. NO CLASS
5-May Papers 9 Final Report Rough Draft
10-May Spring Symposium NO CLASS ?
12-May No large assignments due. Papers 10
17-May ?
19-May Last class ?
5/24-5/28 EXAMS Final Code; Final Report; Poster

TA/Tutoring Sessions

This course has no dedicated tutoring resources. General tutoring will be able to help with Python-specific questions or with setting up and managing Python itself.

Information about the tutors can be found at go/cstutors.