Syllabus



Logistics

Time and Location
MWF: 1:45-2:35 pm ET
75SH 224 (2/14 and 2/16 only on zoom at this link)
Faculty Info
Shelby Kimmel
Please call me "Professor Kimmel" or "Professor"
Pronouns: she/her
Office: 75 Shannon, Room 210
skimmel [at] middlebury (dot) edu
Office (Student) Hours
Location: Concurrently in-person (75SHS Rm 210) and over zoom (Zoom Office Hours Link)
  • Drop-in: Mon 3:30-4:30, Wed 3-4, Thur 2-3, Fri 12-1:30
  • Individual Appointment: E-mail me to arrange
Peer Tutors
TBD. See CS Tutoring Site for more info
Communication
  • I will e-mail you for urgent matters.
  • You can always e-mail me, but I will not answer problem set questions via e-mail, except for logistical or typo questions.
  • I will keep the Calendar up-to-date with assignments and lecture notes.
Class Sites:
Canvas, Panopto
Department Wiki
Department Wiki

Goals

  • Develop strategies to become a better learner and collaborator.
  • Describe, design, and implement algorithms using the following paradigms: Divide and Conquer, Dynamic Programming, and Greedy.
  • Prove correctness of algorithms using inductive proofs and exchange arguments.
  • Analyze the runtime of algorithms. Analyze expected runtime of randomized algorithms using linearity of expectation and indicator variables.
  • Describe ethical implications of algorithms.
  • Create reductions from one problem to another and explain why reductions are important.
  • Understand the importance of NP-completeness, and be able to prove a problem is NP-complete.

  • Environment

    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. This is by nature a team effort, and I expect you to join me in fostering such an environment.

    You deserve a learning environment free of comments or assumptions that are based on race, ethnicity, national origin, accent, religion, sexual orientation, gender identity/expression, body size/type, disability, socioeconomic status, age, or any other part of your identity or perceived identity. I am continually working to recognize and unlearn my own biases and to keep them from causing harm. I expect you to do the same, and to be willing to have a dialog about these biases as needed.

    If you experience or witness any behavior that opposes the creation of an inclusive learning space, it would be helpful for me to know so that I can address it, but I recognize that this is additional work that 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.

    Office (Student) Hours

    Office hours are a time when I am available for you. During office hours, you can ask me for help related to the course, or we can talk about other topics, how your semester is going, careers, or anything else you want to talk about. You do not have to have a question or appointment to come to office hours - you can pop-in for a quick hello, or listen to other students' questions. Office hours help me get to know you on a more individual basis, which in turn allows me to better support you as a learner and a person. Here are some suggestions for what to talk about at office hours if you don't know where to start, or would like to expand your office hours conversations. If you have a conflict with a drop-in session, or if you have something you want to discuss privately, you can e-mail me to schedule an appointment. I look forward to seeing you!

    Names/Pronouns

    I will use the gender pronoun and name you go by, and I expect you to use the names and pronouns your classmates go by. If you wish you can indicate this information through Banner or e-mail me. In class I will give you the opportunity to share your gender pronoun, if you choose, when doing group work.

    Academic Accommodations

    Students who have Letters of Accommodation 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. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield and Peter Ploegman of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.

    Laptop Loaner Program

    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 your professor ahead of time if you think you need one for just a class period, or you can e-mail our CSI Maja Cannavo at: mcannavo [at] middlebury (dot) edu.

    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.

    Title IX

    You deserve a community free from discrimination, sexual harassment, sexual assault, domestic violence, dating violence, and stalking. If you experience or know of a Title IX violation, you have many options for confidential support and/or to report your experience. At go/titleIX you can read more about how to get help and support. Note that I am a mandatory (non-confidential) reporter.


    Learning

    Learning happens when you develop new neural pathways. You do this by repeatedly practicing new skills. This takes time, patience, and perseverance, and it can sometimes feel deeply uncomfortable. My role is to facilitate your learning by providing guided practice with feedback, and to help you structure the pace of your learning.

    Based on your past learning experiences, you may already have the neural pathways in place to quickly learn certain topics, while you may have to work harder on others. This has nothing to do with your ability to learn this material. You all have the capacity, with sufficient practice, to rewire your brains to become experts in this subject.

    Distractions

    Your being in class helps your classmates to learn, just like their presence will help you to learn. If you become distracted, whether through digital devices or analog daydreams, it not only affects your learning but hampers the learning of those around you; it can distract them, or it can make you unprepared to engage with your group. If your behavior is disruptive or distracting to the learning of your peers, I will give you a warning. If it continues, I will ask you to leave.

    Rough Drafts

    For the majority of students, starting an assignment a few days ahead of when it is due vastly improves their learning and the quality of their work because it gives your brain time to process the material/problems. To encourage this action, I give you credit for "rough drafts" for several types of assignments. If this process is not working for you, please discuss with me.


    Honor Code

    All work you turn in should be your own. However, collaboration on problem sets and programming assignments is encouraged. Please adhere to the following guidelines:

    For problem sets, you must acknowledge your collaborators, and write up your solutions on your own, using your own words. I recommend practicing solving some problems on your own, since this is what you will have to do for quizzes and exams.

    For programming assignments, you may work with others to understand the project and sketch out an approach. Then, when you are ready, without the notes you used while working with others, write your own program. You may also discuss debugging approaches with a peer, but you should make changes to your code on your own. You may use code snippets that you find online to implement specific functionality, if you make a note in a comment about where you found the code, but you should not try to find code online that implements the full assignment.

    First attempts at exams and quizzes must be entirely your own work, and should be completed only with the resources specified. Revisions can be discussed at a conceptual level with a peer or with me, after both students have completed the exam/quiz in question. If you discuss with a peer, please do not look at their submission, instead, you can discuss the concepts with them generally, or you can go over similar problems in more detail. Please do not post questions about quizzes to the Problem Set Discussion board. Again, the actual revision should be completed on your own and in your own words.


    Assessments

    Your grade in this class will be based on a combination of effort and demonstrated skills. Most assignments will be credit/no-credit (but with unlimited revisions allowed in the case of no-credit). This means you won't get a letter or number grade for any individual assignment or assessment. Instead you will get feedback. I've made this choice to increase equity and learning. Grades have been consistently shown to hamper learning, and they also often are correlated with your previous experience, rather the effort and learning you put into a given class.

    Late Submissions

    Except for Class Participation Check-Ins, you can turn in assignments late (up to the final deadline at the end of term) and still earn full credit. However, if you turn work in on time, you will receive feedback in a timely manner which will help you revise, if desired, to earn additional points. Sticking close to the deadlines will help you from falling behind, as this class moves quickly and assignments pile up fast.

    Revisions

    If you revised a submission in any way and would like it re-assessed to earn additional points, you must resubmit it on Canvas. This will alert me and the TAs that it needs to be looked at.

    Effort Based Assessments

    Problem Sets (Psets) (max 40 points - 1 lowest score assignment dropped)

    The problem sets provide you with low-stakes opportunities to practice problem solving, to make mistakes, and to make new neural connections before demonstrating skills in quizzes and exams. You will often have to transfer knowledge from a problem you've seen before to a new context. The only way to develop this skill is to practice. If you need additional practice beyond the problem set, see these textbooks.

    There are three components to problem sets, and all parts are submitted through Canvas:

    Participation (max 9 points - 2 lowest score assignments dropped)

    To get the most learning out of this class, you should actively and critically engage with the material through interactions with me and with your classmates in a consistent way. To get participation credit for a week, you should write an exit ticket within 24 hours after each class, and participate in some other active way with the course. You will self-report your participation at the end of each week (1 pt/week) through Canvas. There are no revisions for participation credit, and they must be turned in within 24 hours of the deadline. If you are dealing with extenuating circumstances that make it difficult for you to participate, please alert me as soon as possible so that we can discuss alternatives.

    I expect you to attend class regularly and be on-time, in order to contribute to your learning and the learning of your peers, but you will not lose points if you miss a class. If you must miss a class, please let me know as early as possible so I can ensure your group members will still have a positive learning experience; you are still responsible for the missed material.

    Reflections (25 points)

    Metacognition (thinking about how you learn) not only will help you to learn this material, but will help you develop strategies to be a better learning. You will do this through written reflections every few weeks. See reflection instructions. (5 pt/reflection)

    Group Work (5 points)

    One of the most important skills I want to help you to develop is the ability to foster inclusive and productive problem solving teams. You will self-assess your effort and progress in this skill in your reflections, and I will provide feedback. (1 pts/reflection)

    The goal of group work is not to get to the correct solution (in fact I will rarely give you enough time to fully solve the problem) but to learn from each other. Explaining your thoughts solidifies your thinking, hearing other people's perspectives broadens your conceptions. Additionally, working with other students will help you to build a community within the computer science department. Finally, practicing working in groups will help you to become a better team member no matter what you do after Middlebury.

    The following are some suggestions to participate in group work:

    Skill Based Assessments

    Quizzes (max 24 points - lowest score quiz dropped)

    Each week you will complete a quiz in Canvas (for many students the quizzes take under 30 minutes, but they are not timed) that asks you to demonstrate skills similar to what you've practiced in that week's problem set or in-class problem-solving. For each problem/part of the quiz, you will either get credit, if you demonstrate understanding/skill or no credit. Credit earns you a point or fraction of a point, depending on the number of parts in each quiz. On problems that you do not earn credit for, you will receive feedback, and you can revise. (You can revise multiple times - often one revision is sufficient.) If you revise, in order to get credit, you must also write a mini reflection discussing how your understanding of the concept has evolved. See revision instructions . (3 pt/quiz)

    Large Assessments (30 points)

    There are two longer, cumulative assessments (15 pts each), that I provide several days to work on and that you submit to Canvas. (I do not expect you to spend multiple solid days working on them - instead you can work on them a bit each day that they are available.) Like the quizzes, you will receive feedback and can revise/reflect. I will give credit on a problem by problem basis based on whether you have demonstrated sufficient understanding/skill.

    Combination Assessments

    Programming Assignments (18 points)

    There will be three programming assignments. You will get partial credit for completing a Rough Draft and for a good-faith effort to complete the assignment. To get full credit, you should create working code that satisfies any specifications of the assignment, is well organized, and is easy to read. See instructions for additional information. (6 pts each)


    Grading

    Your final grade will be determined by the number of points you earn:


    Advice from Spring 2021 Students

    ((x5) means 5 people agreed with the advice or gave similar advice)


    Texts

    There are no required texts; lecture notes are posted on the calendar. However, you may find the following textbooks useful for finding practice problems. In addition, you may find SensusAccess helpful, a service which converts pdfs into mp3 or ebook format.

    The following e-books are available through the Middlebury library or open access. If you find another resource that you is helpful, please let me know. If you would like to review topics from CS200, see these texts and several pdfs posted filed on Canvas Files Resources By Topic:
    Topic Chapters
    Divide and Conquer
    • ItA: 4
    • Algs: 1.1-3
    QuickSort
    • ItA: 7
    • Algs: 1.5
    Dynamic Programming
    • ItA: 15
    • Algs: 3
    Greedy Algorithms
    • ItA: 16
    • Algs: 4
    Shortest Paths
    • ItA: 24/li>
    • Algs: 8
    NP and Reductions
    Randomized Analysis
    • ItA 5
    Creative Commons License
    This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.