CSE 311: Topics

1. Propositional Logic

Propositional Logic gives us tools for precisely describing and analyzing logical statements. Real-world problems are usually given to us in English. In order to apply our new tool, we must first “formalize” the problem by translating the statement into Propositional Logic. Then, we can analyze it using tools such as truth tables or SAT solvers.

  • Lecture slides
  • Section slides and worksheet (solution)
  • Homework 0 worksheet
  • Homework 1 worksheet. Chang Log:
    • On Task 6, parts (c-e) now say that Alex and Dylan (not Chris) should not have the same color. The variables to use for Dylan should be d_R, d_B, d_G (not c_R, c_B, c_D).

2. More Logic

In this next topic, we will extend our knowledge of logic in a few ways. First, we will show the connection between Propositional Logic and circuits. Second, we will look at how to prove logical expressions (or circuits) equivalent without truth tables. Finally, we will extend our logic with the ability to talk about properties of objects, giving us Predicate Logic.

3. Proofs

In this topic, we will learn a new way to reason about facts in logic. Previously, we saw how to show that various facts are equivalent. Here, we will see how to infer new facts from known ones. This includes equivalence as a special case (when we can infer either fact from the other) but is vastly more powerful.

We will begin by writing our proofs formally, which makes them easy to check. Formal proofs are built up using inference rules. Then, we will begin learning how to write English proofs by translating our formal proofs into English. As the course continues, we aim to get more confortable writing proofs directly in English, without working formally.

  • Lecture slides
    • Video on the additional rules for Propositional Logic inference without truth tables
    • See the Resources page for a reference sheet of inference rules.
  • Section slides and worksheet (solution). Change Log:
    • Fixed an error in Task 5(b). The "given" and "conclusion" are now swapped.
    Other resources:
  • Homework 3 worksheet. Change Log:
    • Task 7: fixed the types to be calculated in both parts (a) and (b) as well as some notation for the types in part (b) description

4. Number Theory

In the remainder of the course, we will look at different kinds of mathematical objects that show up frequently in computer science. In addition to learning about their properties, this will give us settings in which to practice the proof techniques we learned in Topic 3.

In this topic, we look at important properties of numbers. All data in a computer is stored as numbers and the only operations computers can do on their own are arithmetic calculations. For that reason, numbers arise everywhere in computer science, and we need to understand them well in order to make computers do interesting things for us.

  • Lecture slides
    • Video recording of Monday's lecture is here.
    • See the Resources page for a reference sheet of formal-to-English translation and number theory definitions.
  • Section slides and worksheet (solution)
  • Homework 4 worksheet. Change Log:
    • Task 5: fixed the English description to match the formal statement to be proved ("4x" instead of "3x")

5. More Number Theory

In this next topic, we will extend our knowledge of number theory in a few ways. First, we will use our knowledge of congruences to show that we can solve for the variable that appears in a congruence (here, usually called a “modular equation”). Second, we will add two new inference rules that apply specifically to the domain of non-negative integers. These allow us to prove for-all claims over the non-negative integers in a new way. Finally, we will look at a few more applications of number theory that arise widely in computer science.

  • Lecture slides
    • See the Resources page for a reference sheet of English proof templates for induction (ordinary and strong)
  • Section slides and worksheet (solution)
  • Homework 5 worksheet. Change Log:
    • Task 1: note that using DivideEqn is allowed

More topics coming as the course continues...