Syllabus
- Logistics
- Goals
- Environment
- Learning
- Honor Code
- Assessments
- Grading
- Advice from Spring 2021 Students
- Texts
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.
- Department Wiki
- Department Wiki
Goals
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:
- Talk to me or e-mail me
- Report it in 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.
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:
- Rough draft (1 pt each): To complete the problem set, your brain needs time (and sleep) to brainstorm, consolidate, and synthesize ideas. To get this process started, you should submit a "rough draft" of your problem set. This draft can take any form you choose, but should demonstrate you've spent at least 1-2 hours working on or thinking about the problem set. Once you submit the rough draft, hints for the pset will become available on Canvas files. You should try as much as possible to complete the problem set without the hints, but if you are stuck for some time, you can use the hints to try to get unstuck.
- Problem Set (2 pt each): Write up and turn in your solutions to Canvas. Your solutions do not need to be perfect or even complete. You are not being graded on completion or correctness. The point of the problem sets is to help you learn and practice the skills of the course. You should put time into them but if you get to the point where you feel additional time spent on the problem set is not contributing to your learning, you should stop. (But I suggest working on it over multiple days, as you will likely find that where you were once stumped, you now have an idea for a way forward.) Once you turn in your problem set, solutions for the pset will become available on Canvas. You will use these for the self-assessment.
- Self-Assessment (1 pt each): You will critically compare your solutions to pset problems with my solutions. This process helps you to figure out what you understand, and where you need more practice. You should follow these instructions.
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:
- Suggest an idea
- Highlight an idea that someone else suggested
- Solicit feedback on an idea
- Give feedback on an approach
- Write on the board
- Ask questions: ask what the problem means, ask for clarification for something you don't understand, ask for more time to think
- Restate in your own words something someone else said.
- If you are someone who is uncomfortable with silence and likes to fill it, try to sit in silence to give others a chance to think and speak.
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:- 143-151: A
- 133-142: A-
- 125-132: B+
- 117-124: B
- 109-116: B-
- 103-108: C+
- 97-102: C
- 92-96: C-
- 45-91: D
- <=44: F
Rationale
You can earn 91 points entirely based on effort (from psets, participation, reflections, and programming assignments), without demonstrating specific skills. As long as you put in "half" of the total effort you will earn a D. You level-up by demonstrating more and more skills over effort points. To increase levels in the C range you need 6 points, which corresponds to e.g. credit for 2 quizzes. To increase in the B range you need 8 points, which corresponds to e.g. about half the credits in a major assessment. To increase in the A range, you need 10 points, which corresponds to e.g. credit for 2 quizzes and skills credit for 2 programming assignment.
Thinking about the scale from the top down, you could skip all of the programming assignments and still earn an A-. Or you could skip the final assessment and an additional quiz (on top of the lowest-score quiz that is already dropped) and still earn an A-. I hope these examples will help you think about devoting your time in ways that you find enjoyable and useful for your learning.
Advice from Spring 2021 Students
((x5) means 5 people agreed with the advice or gave similar advice)
- Spend time working on the rough draft. It makes the weekends less stressful and your understanding of the problems is enhanced. (x11)
- If you feel stuck on a concept, know that you are absolutely not alone in that feeling, and working on a concept with some friends, tutors, ASIs, or going to office hours will help lift that burden. They are actually so happy to help and it saves you from getting behind. (And in office/tutor hours sometimes you can hear from students working on the same problems, which really helps your understanding) (x9)
- Remember that the deadlines are flexible and don’t stress out too much if you hand something in a day or two late, as long as you generally keep on top of things. It’s more important that you learn the material than that you’re overly stressed about handing in everything exactly when it’s listed on the calendar. But just because you can submit the assignment late, doesn’t mean you can procrastinate more. Take advantage of the rough drafts to start earlier. Don’t get backlogged assignments because you didn’t finish one one week. (x6)
- For the programming assignments, take a good amount of time looking at starter code and its data structures, so you will have the tools to put your ideas down without the resistance of Java technicalities (x4)
- Make sure you understand the solutions for the problem sets. A lot of the curriculum builds upon itself so it is important to have a solid foundation before moving onto the next week’s material. (x4)
- Don’t worry if you get totally stuck on a problem - there are usually hints once you submit your rough draft, and you can always look at Professor Kimmel’s solution to see if you were on the right track. (x3)
- Go to ASIs for questions about the programming assignment (Maja took the class last year!) (x2)
- Go back to PSs from earlier in the semester! All information in the course is cumulative, so review is especially important.
- Make use of exit tickets to ask questions or get clarification on course material. Also, look at what other people are writing exit tickets about and see if you can either answer their question (often, answering someone else’s question helps reinforce your learning), or see if you have a similar question.
- In group problem solving in class, even if your group is super stuck, think about what you know and try to take a stab at the question... you might surprise yourself!
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- ItA: Introduction to Algorithms by Cormen et al.
- Algs: Algorithms by Jeff Erickson
Topic | Chapters |
---|---|
Divide and Conquer |
|
QuickSort |
|
Dynamic Programming |
|
Greedy Algorithms |
|
Shortest Paths |
|
NP and Reductions |
|
Randomized Analysis |
|