9/23/2017: Office hours updated:
Many of the questions and answers we pose in computer science can be stated most simply and clearly using the language of mathematics. In this course, we will learn about mathematical objects, ideas, and techniques that are useful for computer science. This knowledge will allow you to communicate clearly with other computer scientists and programmers, and will be helpful in understanding many of the more complex concepts in computer science.
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.
After completing this course, students should be able to
The syllabus contains important information! You are expected to be familiar with all of the information contained in the syllabus.
Time and location: Monday, Wednesday, Friday in MBH 411
What do I call you? Please call me Professor Kimmel or Professor. I use the pronouns she/her/hers.
Professor Office Hours: in MBH 635. Drop-in: Tues 1:30-2:30, Wed 3-4, Friday 3-5. By appointment: Tuesday 9am-noon + other times: Click Here to book at least 16 hours in advance. If none of the above work, e-mail me to schedule a meeting.
Tutor Office Hours: See the CS Tutoring Site
Super Useful Department Wiki: Here!
Communication: I will use e-mail to communicate with you about urgent matters. Please check your Middlebury e-mail at least once a day. I will post less urgent messages (e.g. a change in office hours) to the announcements section of this site. Please check the Calendar regularly for an up-to-date record of assignments, due dates, and lecture notes.
There are no required texts. I will post lecture notes after each lecture. I will also post suggested OPTIONAL readings from the texts below. These readings will give you a different perspective from the one I provide in class. All textbooks are open access.
One CSCI course at the 100-level.
I expect all students to work to develop a growth mindset: awareness that intelligence is not fixed, and that your ability in any skill will increase through practice. I will provide many low-stakes opportunities for you to practice skills in this course, including in-class activities and problem sets.
Part of developing a growth mindset is viewing critical feedback (through grades or other forms of assessment) for what it is: an opportunity to understand your weaknesses and improve on them, rather than a sign of failure. This perspective will not only tend to improve your grades, but will make learning more enjoyable.
You will be assigned to a small group for in class discussions and problem solving. Groups will be assigned randomly. Diverse groups tend to perform better than homogeneous groups, so please think about what diverse perspectives or background you might bring to your group.
Technology in the Classroom
You may NOT use any type of cell phone, tablet, or computer during class, unless you have a compelling reason. Please come talk to me if you have a compelling reason for wanting to use technology. Otherwise, I will ask you to put the technology away, or step out of the class while using it. Taking notes on a laptop has been shown to be less effective and lower quiz scores not only for the student using the device, but for nearby students as well (because it distracts those around you).
Office Hours and E-mail Policy
Please come to office hours with specific questions, comments, or concerns. I will not answer coding questions or problem set questions via e-mail, except for logistical questions.
As mentioned above, problem sets are an opportunity for you to practice the skills of this course, and to become aware of areas for further practice and improvement. Because of this, only a small part of your grade is based on the correctness of your responses.
Each problem set will have two parts:
Please see the Resources tab for a sample problem set procedure.
Programming assignments serve to connect some of the abstract mathematical concepts we learn in class to more concrete problems.
Quizzes and Tests
One of the primary ways I assess your learning is through quizzes and tests. However, you should also view these assessments as feedback on your own learning. There will be quizzes on most Fridays. Quizzes will usually consist of two problems, one from topics on the problem set due earlier that week, and one from earlier topics. (Questions will typically be similar to in-class activities or problem sets questions.)
The midterm will be Friday Oct. 20, 2:45-4:45 pm in MBH 216, and the final will be scheduled (you may attend either session):
Get Out of Jail Free Passes
I will drop your two lowest problem set scores, quiz scores, and programming assignment scores.
Evaluation and Grading
Your final grade will be determined as follows:
Note: rubric points do not necessarily correspond to percentage points.
Excused Absences and Extensions:
If you miss class because of sickness, a doctor/nurse's note should be provided. If you will miss class because of a religious observance, please notify me within the first two weeks of class. Other absences will be dealt with on a case by case basis, but please let me know as early as possible if you will not be able to attend a class. If you miss class, you are still responsible for the missed material. You should carefully read the lecture notes for the class you miss. I will be happy to answer questions related to the lecture, but I will not repeat the lecture for students who missed the original. Quizzes will be rescheduled as necessary for students with an excused absence.
In extenuating circumstances (e.g. personal crisis, serious illness, family problems) extensions for assignments or quizzes may be granted. Please contact me in this case.
You are expected to maintain the highest level of academic integrity in this course. This means that work you submit must be the result of your own individual effort. You may discuss problem sets and programming assignments with other students in the course, but you may not collaborate in the actual writing of problem sets or code. (This is obviously to your benefit as a learner, since your skills will not improve if you do not practice those skills!)
If you work with another student on a problem set or programming assignment, or if another student contributes a significant idea that you use, please acknowledge that person (e.g. "I worked with xxx on this problem.") For programming assignments put this acknowledgment in a comment header.
Regarding problem sets: You may not read, copy, or possess another student's solutions, solutions from previous semesters, or solutions you may find online, while working on Part 1. While working on Part 2, in order to grade your problem set, you may obviously look at the written solutions I provide, but you can also look at other students' solutions in order to discuss self-grading. The reflection must be entirely your own work.
Regarding programming assignments: You can help one another, but I do not want to see identical assignments that differ only in small ways. If someone does show you code (as an explanation or asking for debugging help), do not copy it. Retain ideas, and go away and write your own version later. I encourage you to help classmates to debug misbehaving code. You are welcome to use the internet to look up approaches for basic language functionality, but you may not look up code that implements the complete solution.
The exams and quizzes must be entirely your own work. You may not share any information about tests or quizzes with any other students, either within or outside of the course.
Students with documented disabilities who may need accommodations in this class (e.g., extra time on exams) are encouraged to contact me as early as possible to ensure that such accommodations are implemented in a timely fashion. Assistance is available to eligible students through the Student Accessibility Office. Please contact one of the ADA Coordinators. Jodi Litchfield cab be reached at firstname.lastname@example.org or 802-443-5936 and Courtney Cioffredi can be reached at email@example.com or 802-443-2169 for more information. All discussions will remain confidential.
This syllabus is a guideline, and parts may be subject to change if we find that they are not conducive to your learning.
The following is a sample procedure for how problem sets work in this course.
You grades for nearly all problem set questions will depend on the clarity of your writing and thinking, and not just on correctness. It is very hard to write a good problem set solution that is both clear and correct on the first try. I strongly encourage you to revise your problem set solutions at least once. One of the things that makes this easier is typing your solutions. I recommend LaTex, but it is not required. See these tutorials for a good introduction to LaTex.
If you find you are struggling with a problem and getting frustrated, take a break and come back to it, preferably a day later. Research indicates that sleep is very important for learning. I have often been surprised when a concept that I could not grasp one day suddenly became clear the next day. (A corollary of this is that you should not start your problem set the day before it is due.)
If you find during the self-grade or based on our grading of a problem set that you have made a serious mistake, I recommend looking at the solution, then putting the solution away and trying to solve the problem again. This practice will help you to learn. If you find that you need more practice, try looking for similar problems in the textbooks listed above, or ask me for suggestions.
I do not expect you to do all parts of all problem sets correctly. The problem set is an opportunity for you to practice and learn. You can still get an A in this course without getting 100% on the problem sets.