Syllabus
- Logistics
- Goals
- Environment
- Learning
- Honor Code
- Technology
- Class Participation
- Assessments
- Grading
- Texts
Logistics
- Time and Location
-
200A: MWF 8:00 AM-8:50-AM in 75 Shannon, Room 203
200B: MWF 9:05 AM-9:55-AM in 75 Shannon, Room 203 - 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 Hours
- Location: 75 Shannon, Room 210
Please come to office hours with specific questions, comments, or concerns
- Drop-in: Monday 10-11, Tuesday 1:30-2:30, Wednesday 3-4, Thursday 3-4
- Appointment (in person or video conference): go/KimmelHours, frequently Thursday 11-12. When you sign up please specify whether you prefer in person (at my office) or video conference (Google Hangouts).
- If Drop-in and Appointment hours don't work with your schedule and you would like to meet, please send me an e-mail.
- Communication
-
- I will e-mail you for urgent matters. You can always feel free to e-mail me, but I will not answer coding questions or 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.
- Peer Tutors
- CS Tutoring Site
- Canvas Site
- Canvas Site
- Super Helpful Department Wiki
- Department Wiki
Goals
Learning Goals are broad and somewhat immeasurable goals that I want you to achieve by the end of the course. Learning Objectives are concrete, measurable learning outcomes that will help you to reach the Learning Goals.
Learning Goals
- Think like a computer scientist (using the tools of mathematics).
- Communicate like a computer scientist (using the language of mathematics).
- Ability to apply the common mathematical tools of computer science to solve problems, including in novel situations.
Learning Objectives
- Use mathematical notation for basic mathematical objects such as sets and functions correctly and appropriately.
- Write clear, concise, and correct proofs using the following techniques: direct proof, induction, contrapositive, proof by contradiction, proof by counter example, and proof by cases.
- Analyze function growth and algorithm runtime using asymptotic notation and recurrence relations.
- Solve combinatorial problems
- Describe graphs and their properties, prove statements related to graphs, and understand simple graph algorithms.
- Describe and analyze random events using discrete probability.
If you feel have already achieved many of these learning goals through other coursework, please let me know so we can determine if you should take this class.
Environment
My goal is to create a classroom environment that is equitable, inclusive, and welcoming, in order to promote learning for all students. If aspects of this course create a barrier to inclusion, please let me know, as I am constantly working to create a more equitable environment. I do not tolerate discrimination.
Names/Pronouns
I will honor your request to address you using your preferred name and pronoun. I will collect this information in the first week of class through a survey, but feel free to communicate this information to me through e-mail at any time.
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
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 support and/or reporting; see go/titleIX. Note that I am a mandatory reporter.
Learning
Learning happens when you develop new neural pathways. You do this by repeatedly practicing new skills and applying those skills in novel situations (transfer). Thus, my role is to facilitate your learning by providing guided practice with feedback. I expect you to be an active participant in your learning and to recognize where you need additional practice or guidance, and to seek it out by coming to office hours, or using additional resources, e.g. these textbooks. I also expect you to manage your time to foster learning: it takes repeated practice over several days or weeks to build new neural connections, and last minute cramming, or starting the problem set the day before it is due, is not conducive to long-term 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. Students come into this class with a wide range of prior experience, and hence some students find some topics "easy" and some topics "hard." 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.
Honor Code
You are expected to maintain the highest level of academic integrity in this course. All work you turn in should be your own. However, collaboration on problem sets and programming assignments is not only allowed, but encouraged. If you work with another student on a problem set or programming assignment, please acknowledge that person (e.g. "I worked with xxx.") Additionally, please adhere to the following guidelines:
For problem sets, you may discuss or work on problems with others, but you should write up your solutions on your own, using your own words. However, 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, spend as much time as you would like working 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 again, 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.
The exams and quizzes must be entirely your own work. Exams and quizzes should be completed without any notes or other resources, unless specifically allowed for. You may not share any information about tests or quizzes with any other students, either within or outside of the course.
Technology
Technology should only be used if you have a compelling reason why it will enhance your learning. Taking notes on a laptop has been shown to lower quiz scores not only for the student using the device, but for nearby students as well (because it distracts those around you).
If technology is used inappropriately, I reserve the right to forbid its use.
Class Participation
Your participation grade is based on the quality of your group work, your attendance, and additional participation options:
Group Work
- What:
- Randomly assigned group of 3 or 4 students for solving and discussing problems, with new groups assigned approximately every 3 weeks.
- To participate in group work, you can:
- Suggest an idea
- Write on the board
- Ask questions: ask for clarification, ask for more time to think, ask if everyone understands.
- Try to restate in your own words something someone else said.
- Provide encouragement
- Why:
- Working in a group will help you to learn. Explaining an idea to someone else helps you to understand the idea at a deeper level. Hearing other people's perspectives broadens your own conceptions of how to approach problems. Whether you are asking or answering questions, you are furthering your own learning and the learning of those around you.
- Working with other students will help you to build a community within the computer science department.
- Nearly all careers involve collaboration. Practicing working in groups will help you to become a better team member no matter what you do after Middlebury.
Attendance
It is important for you to attend class because of the group problem solving we do - your being in class helps your classmates to learn, just like their presence will help you to learn. Thus, your class participation grade will depend on your regular, on-time attendance. If you will have to miss a class, please let me know as early as possible; you are still responsible for the missed material. I will be happy to answer questions related to the lecture, but I will not repeat the lecture for students who missed the original.
I will use Plickers to keep attendance and for feedback, but the correctness of your Plicker responses will not affect your grade. If you lose your Plicker QR code, ask me for your number and print out another copy from the Plickers website.
Additional Participation
To get full credit for participation, you must also participate in one or more of the additional ways:- Come to office hours several times during the semester.
- Ask questions during class
- Contribute to crowd-sourced notes. These notes will provide you and your classmates with a searchable, easy-to-read record of the course content. The goal is to increase accessibility of course content for all students in the course.
- Regularly attend peer tutoring sessions
Assessments
Problem Sets
The problem sets provide you with opportunities to practice problem solving, and importantly, to figure out what you understand and where you need additional practice. The problems will not necessarily be cookie-cutter versions of the problems we do in class. Instead, you will sometimes have to transfer knowledge from a problem you've seen before to something new. The only way to develop this skill is to practice. If you need additional practice beyond the problem set, there are many practice problems in these open access textbooks).
You will be graded on effort and thoughtfulness, not correctness. Each problem set will have four parts, and all parts are submitted through Canvas. (Note the problem set questions are posted on the Calendar page of this site.) I will drop your two lowest problem set scores. Please see these detailed instructions for how to submit the Rough Draft, Problem Set, and Self-Assessment.
- Rough draft: It is extremely difficult to complete one of my problem sets in one sitting. Your brain needs time to understand, brainstorm, and synthesize ideas, and this process generally takes a couple of days (and several good night's sleep) and occurs even if you are not actively thinking about the problem set. To encourage you to do this, you must submit a "rough draft" of your problem set. This draft should demonstrate that you have spent time (at least 1-2 hours) thinking about the problem set by the time the rough draft is due. The draft can take the form of rough notes, pictures of blackboards where you've attempted problems, a short audio file discussing your approach or anything else that demonstrates time spent working on the problem set.
- Problem Set: Provides opportunity and incentive to practice skills of the course.
- Self-Assessment: Helps you to figure out what you understand, and where you need more practice. I will give you my solutions to the problem set, and you will go through your solutions and use this guide to assess your work. Your self-assessment will be done through the Canvas feedback system, as per these instructions.
- Reflection: Studies have shown that thinking critically about your learning process improves your learning. To facilitate this thinking, after each problem set, you will write a reflection, using this worksheet as a starting point. Submission is through Canvas.
For problems where there are many correct (and many incorrect) approaches, such as proofs, TAs will be available to provide additional feedback. You will be assigned a TA that you can contact if your solution is different from mine, and you can't figure out if it is correct or not.
If you are the first to find a typo in the problem set or solutions, I will give you a small bonus.
Sometimes, life happens. You can choose to not submit up to 2 of each problem set part without an effect on your grade. If you turn in all problem sets, I will drop your two lowest submissions of each type. You do not need to tell me when you are not turning them in. You are still responsible for all material.
If you have a regular commitment that makes it hard for you to meet one of the regular problem set deadlines, please discuss with me so we can find an alternate schedule.
Programming Assignments
There will be two programming assignments. They will be graded for correctness, readability, documentation, and style, and can be written in Java or Python.
Goals:- Connect some of the abstract mathematical concepts we learn in class to more concrete problems.
- Practice writing code from scratch without any template.
- Practice finding and learning how to use unfamiliar packages and/or built-in functions/methods.
Quizzes
There will be a weekly quiz for me to assess your understanding and problem solving. Additionally, studies have shown that giving these types of assessments improves learning through the "testing effect." Quizzes will usually consist of two problems, one from topics on the problem set due earlier that week, and one from earlier topics. Quizzes will be taken outside of class through Canvas. All quizzes are completely closed book/note (unless otherwise specified) and must be completed individually. I will drop your two lowest quiz scores.
Tests
The midterms will be self-scheduled. You should plan to set aside 3 hours during the exam window to take the test. If your schedule will not allow this, please let me know as soon as possible. The dates of the midterms are:
- October 9-11
- November 6-9
You can take the final in the time slot for either section.
- Tuesday, December 10, 7pm-10pm
- Wednesday, December 11, 9am-noon
Grading
Your final grade will be determined as follows:- Final: 20%
- Midterm 1: 15%
- Midterm 2: 15%
- Quizzes: 10%
- Problem Sets: 20%
- Programming Assignments: 5%
- Class Participation: 15%
Lateness
I expect all work to be handed in on time. If you are unable to meet a deadline, it is important that you get in touch with me as soon as possible. (If you plan to use one of your dropped quizzes or problem sets, you do not need to let me know.)
Texts
There are no required texts; lecture notes are posted on the Calendar. However, you may find the following open access textbooks useful for finding practice problems. In addition, you may find SensusAccess helpful, a service which converts pdfs into mp3 or ebook format.
Recommended:
- DMOI: Discrete Mathematics: an Open Introduction by Oscar Levin
- BOP: Book of Proof by Richard Hammack
- DMAIA: Discrete Mathematics and Its Applications by Kenneth Rosen (individual Chapters and a solution file are under Files on Canvas)
- MCS: Mathematics for Computer Science by Eric Lehman, F Thomson Leighton, and Albert R Meyer
Topic | Location(s) |
---|---|
Statements (Propositions) and Predicates |
|
Logic and Deduction |
|
Sets |
|
Quantifiers/English-Math Translation |
|
Direct Proofs |
|
Contrapositive Proofs |
|
Iff Proofs |
|
Proof by Cases |
|
Proof by Example/Counterexample |
|
Proof by Contradiction |
|
Proof by Induction |
|
Proof by Strong Induction |
|
Functions, Injective, Surjective |
|
Big-O, Big-Omega |
|
Summation, Arithmetic/Geometric Series |
|
Recurrence Relations |
|
Graphs and Representations |
|
Trees |
|
Sum, Product, and Subtraction Rule |
|
Permutations and Combinations |
|
Probability Basics |
|
Conditional Probability |
|
Random Variables |
|
Counting Infinities |
|
Relations/Equivalence Relations/Equivalence Classes |
|
For Additional Practice:
- Foundations of Computing by Carol Critchlow and David Eck. (sets, proofs, functions, relations)
- Combinatorics by Joy Morris. (combinatorics)
- Applied Discrete Structures by Al Doerr and Ken Levasseur. (sets, combinatorics, logic, functions, recurrence relations)