Welcome! You may be wondering what we're learning in this course. On this page, I give three
answers.
If you're looking for logistical information, you can find it on the
course syllabus.
What are we learning in this course?
This is a course about logical reasoning and problem-solving.
- Logical Reasoning
In math, computer science, and in life, there are claims that everyone agrees to be true,
and claims whose truthfulness is less clear. In this course, we learn how to construct proofs that
start with agreed-upon definitions/theorems/rules and end with a logically sound conclusion. Of equal (if not
higher) importance, we learn to read proofs and determine whether they are logically sound.
- Problem-solving
Many of the proofs in this course will require a bit of ingenuity. Ingenuity is never easy
to come across, but in this class we'll learn lots of related skills, including how to distill a problem to its
important parts, how to learn from a solution and understand its ingenuity, and how to apply encountered ideas to
new contexts. All of these will help us mitigate the difficulty of the problems we face, both in class and in
the real world.
In a computing world that is increasingly dominated by automation, it will become all the more important to be able to
(1) ascertain and verify the truthfulness of claims and (2) creatively problem-solve in complex situations. At least for now,
these are precisely what LLMs are bad at.
What are we learning in this course?
This is a discrete mathematics course. If you grew up in the US, chances are your mathematical education
focused more on continuous mathematics - think calculus and real numbers. After all, the real world is continuous,
so most science is continuous as well! However, data is decidedly discrete
(try as we might to allow otherwise), so the
math we need to do computer science is largely focused on discrete structures. Rather than concern ourselves with
the infinitely small and the infinitely large, we will discuss things that come in neatly packaged units, and
how to think about them, talk about them, and more importantly prove facts about them. Not all of the math will
be explicitly useful in the future, but all of the proof techniques and problem-solving skills gleaned from these
problems will generalize widely throughout CS.
What are we learning in this course?
This course is a grab bag of topics in discrete mathematics, divided into three major units.
- Logic and proofs (Unit 1). Logic will dictate how we can reason about statements,
so it'll be underpinning for all of the ideas and proof strategies that we'll use throughout the course.
- Number theory (Unit 1). Number theory is the study of the properties of integers, with a heavy focus on
the prime numbers. Integers follow a familiar and intuitive set of rules, which should give us a more approachable
on-ramp to proofs.
- Combinatorics (Unit 2). Combinatorics is the study of how to count things. You may have some experience
doing this from infancy, but unfortunately computers (and thus our class) handle quantities much larger than
the number of fingers you have, and for values like that we probably shouldn't be counting one by one either.
- Probability theory (Unit 2). Probability is the study of quantifying the likelihood that
events will occur. We focus on discrete probability, where events occur with countably many possible
outcomes.
- Graph theory (Unit 3). Graph theory is the study of graphs. These are not graphs in the calculus
or statistics sense, but graphs as a set of vertices connected by edges. Graphs are often introduced as a
representation of a physical map, but they can more abstractly represent relations among a set of objects,
like friendships in a set of people or similarities in a set of courses.