(Last updated: January 28, 2023)
(Note that due to the rapidly changing world that we find ourselves in, this syllabus’s policies are perpetually subject to change. All changes to course policies will be reflected in this document and announced in advance in class.)
Table of Contents
- Textbook, Software, and Connectivity
- Diversity and Inclusion
- Pandemic Policies
- Course Work and Evaluation
- Help, Collaboration, and Academic Honesty
What are the mathematical foundations of computer science? How does mathematical formalism relate to the pragmatics of computer science? In this course, we study discrete mathematics, broadly the branches of mathematics that study discrete objects, and their applications towards computer science.
By understanding discrete mathematics deeply, we, in turn, gain an understanding of how mathematics informs our studies as computer scientists, namely:
- We solve problems in computer science by modeling domains of problems, a process that is, at its core, mathematical.
- The interpretation of the syntax and semantics of mathematics is identical to the interpretation of a programming language, so we can leverage our understanding of programming to learn mathematics rapidly.
- There is a spectrum of reasoning between absolute mathematical formalism and informal reasoning, a spectrum that we must move across at will as competent programmers.
Finally, by studying discrete mathematics in depth and relating it to our experiences as computer programmers, we also gain expertise and comfort in studying mathematics as a discipline of modeling and problem-solving.
Course Learning Outcomes
- Mathematical Literacy
- Reading: read and comprehend mathematical text involving both symbols and prose.
- Writing: author arguments of varying mathematical rigor with fundamental proof techniques (i.e., constructive, inductive, contradictory, and equivalence-based arguments).
- Analyzing: critically analyze rigorous mathematical arguments for latent assumptions and missing detail.
- Problem-solving: employ the concrete-to-abstract method to efficiently solve mathematical problems.
- Mathematical Modeling
- Objects: model real-world phenomena using relevant objects drawn from discrete mathematics (i.e., sets, relations, random variables, and graphs).
- Properties: formally state and prove relevant properties of mathematical models using propositional and first-order logic.
- Mathematical Computation
- Combinatorics: count the number of elements in a finite algebraic structure using combinatorial principles.
- Probability: compute the probability of an event using combinatorial principles.
- Graphs: carry out the execution of fundamental graph algorithms by hand, e.g., traversals, spanning trees, and paths.
- Program Reasoning
- Operational correctness: state and reason about formal properties of programs using operational semantics.
- Complexity: count the number of relevant operations that a (recursive) program performs.
- Algorithmic correctness: state and reason about formal properties of algorithms (specified in pseudocode) using tools drawn from discrete mathematics.
- Constructive design: translate between a (constructive) proof of a property and a program that enjoys that property by design.
- Mathematical Soft Skills
- Collaboration: employ appropriate collaborative strategies to productively solve problems with peers.
- Practice: habitualize learning mathematics through self-driven, hands-on exploration and problem-solving practice.
Textbook, Software, and Connectivity
There is no required textbook for this course. Required readings for the course will be distributed electronically as an evolving set of course notes. The course webpage and readings contain suggestions for supplementary texts that give alternative takes on topics or go into more depth.
In this course, we will use the following software packages and services:
- Python: a general-purpose scripting programming language
- Overleaf: online editing and collaboration of LaTeX documents.
- Gradescope: deliverable submission and feedback reporting.
You will receive invitations to Gradescope at the beginning of the semester. Please let me know if you do not receive access to this site. The course webpage also contains additional software resources, _e.g., Python and LaTeX tutorials and other utilities, that you might find useful in this course.
Diversity and Inclusion
I believe that any college-level course should challenge you and put you outside of your comfort zone. My mission as an instructor is to help you manage that discomfort so that you can grow in knowledge and maturity. Therefore, I strive to create a fully inclusive setting so that we all can ultimately succeed in the classroom.
I welcome you to talk to me as early as possible about your distinctive learning needs. I particularly encourage students with disabilities to meet with me and discuss how our classroom and course activities could impact their work and what accommodations would be essential. As part of the accommodations process, I recommend talking to our Coordinator for Student Disability Resources for guidance and further instructions:
- Jae Hirschman, Goodnow Hall, 3rd floor (x3089)
Religious Observance Policy
I also support the class’s religious diversity and anyone who needs to balance academic work with religious observations. Please let me know by week two if you will need to be absent from class for any religious holidays this semester, and we can work out an appropriate schedule for making up absences or missed work.
There are a limitless number of dimensions to diversity and inclusion, the totality of which are un-addressable with a finite set of policies. These may include other issues best addressed earlier in the semester (e.g., student-athlete scheduling) or as they arise (e.g., chronic health flare-ups).
When appropriate, the course features various systems to allow you to turn in work late up to certain limits. Please use these systems (if they are available) first if such issues arise. If such systems are not available, I will do my best to be flexible in these cases with the ultimate goal of facilitating your growth in this course. The earlier that you inform me of such situations, the more I will be able to help you navigate them this semester.
The College has established strong policies surrounding conduct indoors. We will adhere to these evolving policies in our classroom over the semester. Consequently, please feel free throughout the class period to get up, stretch, or take a breather outside as needed. Also, note that irrespective of the College’s current policies, you are free to wear a mask in the classroom as your comfort level dictates.
To optimize our learning time together, classes will consist primarily of collaborative activities, e.g., discussion and group work, similar to a standard semester. Please start your time with your group by establishing how you will physically work with each other during the period. Be aware that someone’s comfort level with physical interaction may be different from yours, and you may need to compromise to effectively work together. Ultimately, I ask you to exercise continual patience and grace with your peers throughout the semester as we explore the material and grow as a learning community.
If you need to take an extended absence from in-person learning, i.e., longer than 2 class periods, I am happy to work with you individually to develop accommodations that will help you succeed and thrive. The only thing I need you to do is to let me know as soon as possible when such a situation will arise or has arisen. I cannot take action if I do not know what is going on, and due to the busyness of the semester, I may notice your absence too late to provide meaningful help.
Because of the finite time we have together this semester, some situations may arise where a reasonable accommodation may not be possible. I will also work individually with you on evaluating options for managing your workload and assisting you in deciding whether continuing with the course is feasible.
Note that while I welcome you to disclose whatever information you feel would be helpful for me to give you appropriate accommodations, you do not need to share any specific medical information with me that you are uncomfortable sharing. I only need to know as early as possible, ideally in advance, of an extended absence, to be able to work with you.
Course Work and Evaluation
My grading philosophy comes from the grading for growth movement described in such texts as Nilson’s Specifications Grading, Feldman’s Grading for Equity, and Blum’s Ungrading. I believe that:
- The stated learning outcomes are achievable by anyone that enrolls in this course.
- Mastery of the learning outcomes is obtained via exploration, experimentation, and failure.
- Eventual mastery should be valued as highly as “getting it right” the first time.
- Your final course grade should reflect your mastery of the course’s learning goals at the end of the term.
To this end, the course is structured around several deliverables that, when taken together, indicate your mastery of the course’s learning outcomes outlined in the Overview section of the syllabus.
The main activities of our course are centered around four kinds of deliverables:
- Daily drills: practice problems due at the beginning of each class period that reinforce the material introduced in the readings.
- Lab exercises: practice and exploration-style problems worked on during class, frequently in a collaborative fashion.
- Projects: individually completed projects that apply the concepts of each unit to substantial, open-ended tasks along the themes of the course.
- Core exams: in-class exams that directly assess mastery of the core skills of the course.
In each course reading, you will find a small number of practice problems that reinforce the concepts introduced in the reading. As the old saying goes, “mathematics is not a spectator sport,” and so these drills are designed to help you begin putting the day’s topics into practice.
- Each day’s daily drills are due before the start of the day’s class period.
- Daily drills are graded on a binary satisfactory (S)/non-satisfactory (N) scale. If it is clear that you have put effort into your responses by completing the problems with mostly positive results, you can expect to receive a satisfactory grade.
- There is a 48 hour grace period for turning in daily drills. Otherwise, late daily drills will not be accepted! Note that you can miss several daily drills without penalty to your final grade; see how your overall letter grade is calculated for details.
- Solutions for the daily drills are posted the day after they are due on the course website. You are expected to check your work against these solutions and bring any subsequent questions you have to the course staff.
The bulk of your practice and exploration of the course learning goals come through lab exercises. These lab exercises will allow you to gain familiarity and eventual fluency with the course concepts by exploring and working through problems. More often than not, lab exercises are completed in small groups so that you can take advantage of the benefits of collaborative learning.
- Each set of labs are due the Saturday of the week that the lab is assigned. For example, if labs are assigned on Monday, Wednesday, and Friday, these labs are due the same week on Saturday.
- Like daily drills, labs are graded on a binary satisfactory (S)/non-satisfactory (N) scale.
- Also, like dailies, there is a 48 hour grace period, late labs will not be accepted, and you can miss several labs without penalty to your final grade; see how your overall letter grade is calculated for details.
- Solutions for the labs are posted a few days after they are due. Again, you are expected to check your work against these solutions and bring any subsequent questions you have to the course staff.
The course projects serve as an opportunity for you to demonstrate mastery of each of the units of course. Each course project is an individually completed, open-ended problem for you to solve and features both a programming and verification component. Note that because the course is ultimately about program verification, the programming component will be fairly minimal. Details of each project will be made available throughout the semester.
Course projects will be graded in more depth than the other deliverables, specifically along two dimensions:
- Is the project correct? Does it accurately solve the posed problem? Does it meet the specification outlined in the problem description?
- Is the project well-designed? Does it follow the design requirements and conventions appropriate to the medium? Is the deliverable clear, and does it communicate a proper understanding of both the problem and its solution?
Rather than using a point-based system that obscures these two dimensions, we codify these requirements with an EMRN rubric (an adaption of the “EMRF” rubric designed by Stutzman and Race). Projects are graded on a four-point scale:
- Excellent (E)
- Complete understanding of the material is evident.
- Exhibits, at worst, a few minor design errors and can serve as an exemplar solution for the course.
- Meets Expectations (M)
- Complete understanding of the material is evident without the need for further revision.
- Exhibits some minor correctness or design errors that can improve the submission significantly if revised.
- Needs Revision (R)
- One or more misunderstandings of the material are evident from the work.
- Exhibits many minor errors or one or more major errors that necessitate revision.
- Not Completed (N)
- Not completed to a degree where understanding is evident.
Each project has a project-specific rubric in its write-up that outlines what we will be looking for regarding correctness and design.
Note that excellent ratings represent work that reflects mastery of the material and mindfulness towards producing quality work. To obtain excellent ratings, you should dedicate ample time to review and revise your work—just like writing a paper—before the deadline.
We deem some of the learning outcomes of the course as core outcomes, demonstrable skills that you should be confident in performing by the end of the semester. To directly assess your mastery of these skills, we will conduct a series of core exams over the course of the semester. Core exams are in-class exams inspired by mastery-based testing practices found in mathematics.
Core exams consist of one problem for each core learning outcome of the course covered so far at the time of the exam. This includes all learning outcomes covered in previous core exams, allowing you reattempt problems if you missed them on previous exams!
Core problems are graded on a binary satisfactory (S)/non-satisfactory (N) scale where a satisfactory answer is completely correct (modulo minor flaws that are understandable given the timed, in-class nature of the exam). Note that, unlikely the demonstration exercises, core problems more closely resemble the daily drills in terms of their scope and complexity. Once you receive an S on a problem tied to a particular core outcome, you do not need to attempt additional problems connected to that outcome in subsequent exams, i.e., you have demonstrated mastery of that outcome, so you are done with it!
The final core exam period of the course, held during finals week, is a revision core exam. No new learning outcomes are introduced so that you have a final opportunity to demonstrate mastery of any core outcomes that you have missed throughout the semester.
Final Deadline for All Work
Note that all work must be submitted by Friday, May 19, 5:00 PM CST . This is College policy and cannot be waived for any reason. If you find yourself needing to turn in work past this deadline, you must consult with me as soon as possible to submit an incomplete request for the course. Regarding incompletes:
- Incomplete requests are not automatically granted; make sure you have a backup plan in case your incomplete request is denied.
- The only work we will allow during the incomplete period are demonstration exercises.
Overall Letter Grades
Major letter grades for the course are determined by tiers, a collection of required grades from your demos and core exams. You will receive the grade corresponding to the tier for which you meet all of the requirements. For example, if you qualify for the A tier in one category and the C tier in another category, then you qualify for the C tier overall as you only meet the requirements for a C among all the categories.
Note that I reserve the right to update the requirements for grades as circumstances dictate during the semester, e.g., if a deliverable is cut. However, I will always update the requirements so that they are no stricter than they were previously.
- D: exactly one of the requirements of a C are met.
- F: no requirements for a C are met.
To earn a plus/minus grade, you must have completed one tier’s requirements and partially meet the next tier’s requirements. This will arise in two situations: C/B and B/A. For example, you may completely meet the requirements of a C and meet the requirements of a B for demos, but not for core exams. In these situations, you will earn a minus grade for the higher tier, i.e., a B- if you are between a C and B and an A- if you are between a B and an A.
Be aware that if you are at an A tier for one deliverable category but at a C tier for another, then you fully qualify for the C tier and partially meet the requirements of the B tier and thus would earn a B-.
Daily drill and lab grades
You may miss turning in at most three daily drills and at most three lab exercises without penalty. After the first three missing drill or lab exercises, your overall letter grade will lower by one-third of a letter grade (i.e., A becomes A-, B- becomes a C+, C becomes a D) for every two additional deliverables you miss from that category. The following table summarizes this policy for concrete numbers of missed daily drills and labs through 9 although the policy extends to any number of missing assignments.
|Missed x/y daily/labs
Our grading system offers flexibility, but at the cost of giving the illusion that if you fall behind in your work, there is always an opportunity to catch up. While this is true in theory, in practice, it is difficult to do so in many situations because of personal issues, competing courses, extracurricular obligations, etc. This flexibility also makes it difficult—for both you and myself—to determine when you have fallen behind in the course and need external help whether that it is from the course staff, tutors, or academic advising.
I encourage you to also preemptively come to me for help and guidance if you feel like you are falling behind. However, to be more clear about when you might be falling behind in the course, I am tracking the following course breakpoints in your progress. When one of the following situations occurs:
- You have missed more than two classes in a row.
- You have used up either your “free” daily drill or lab assignments.
- You receive an N on a project.
- You do not turn in a revision for a project graded as an R during a revision window.
- After a core examination, your total completed outcomes among all outstanding core outcomes is below 60%.
- You are otherwise at substantial risk of earning below a C in the course.
I will follow up with you as well as academic advising (via an academic alert) to check in, provide guidance, and develop a plan for getting back on track.
Help, Collaboration, and Academic Honesty
There are several resources—course staff, your peers, and external sources—that you can use to expedite your learning in the course. However, you must balance your use of external resources with the need for your to produce original work, so that we can assess your learning properly. To this end, we have several policies of what resources are permissible to use depending on the deliverable you are using them on.
The Instructor and Course Staff
Please use each course staff member’s preferred means of communication, e.g., email or Microsoft Teams DM, to communicate with them about individual issues concerning logistics, grades, demos, or core exam questions. Regardless of medium, note that the course staff will generally not respond immediately to messages. However, we will check our messages at fixed times throught the day.
Peer Learning and Outside Resources
Utilizing discussion with peers and outside learning to facilitate your learning is a critical skill for success in computer science. However, at the same time, you must be aware that getting stuck and pushing through challenging problems is essential for robust learning. To this end, we allow the following forms of collaboration.
- You are encouraged to collaborate with your peers on daily drills and the labs. You may also consult the course staff as well as other people and external resources. In all cases, you (or your group in the case of group work) should independently write up your solutions and cite all the resources you used in authoring your work.
- You may only discuss the projects and core exam questions with the course staff. When completing these, you may only consult the course website when developing your solutions. You may not collaborate with peers, consult external resources beyond the ones mentioned above, or share information about these assignments with others.
Keep in mind that adaptation of pre-existing code or solutions whether it comes from a peer, myself, or the Internet, requires a citation in the cases where it is allowed.
In all cases, the work that you produce should be your own. The golden rule is that you should be capable of reproducing your deliverable on the spot with minimal effort if it was accidentally deleted.
If you feel that the stress and pressure of the course are compelling you to violate the academic honesty policies of the course and the college as explained in the student handbook, please talk to me as soon as possible. The course’s grading policies are designed to help you manage your time in light of the different stressors in your life. I will do my best to work with you to figure out how to help you better manage your time relative to your learning goals and desired achievement level for the course.
Sharing of Course Materials
While you retain copyright of the work you produce in this course, we must still uphold the academic integrity of this course. To this end, you may not share copies of your assignments with others (unless otherwise allowed by the course policies) or upload your assignments to third-party websites unless substantial changes are made to the assignment (e.g., significant extensions and improvements to your code). Ultimately, it must be clear that the end product is significantly different from what was asked in the original assignment. I do recognize that there are times when you want to do this, e.g., uploading projects to Github for your resume, and so I encourage you to talk to me in advance so that we can ensure that you upload a meaningful project that does not run afoul of this policy.