CS 240: Introduction to Discrete Mathematics
Lecs 1 & 2, Fall 2017


  • Lecture 1: 2650 Humanities, MWF: 11:00 am - 11:50 am
  • Lecture 2: 132 Noland, MWF: 1:20 pm - 2:10 pm


  • Beck Hasti
    5375 Computer Sciences, hasti (at) cs.wisc.edu
    Office Hours:
    • Monday 2:30 - 3:30 pm
    • Tuesday 1 - 3 pm
    • Friday 9 - 10 am
    • and by appointment


  • Amanpreet Singh Saini
  • Anant Gupta
  • Karan Dharni
  • Karthik Chandrashekar
  • Luke Swanson
  • Qian Zhang
  • Shashank Rajput
  • Shitao Li
  • Zhili Feng


  • The CS 240 website is under construction for the fall 2017 semester.
  • Discussion sections will not meet on Thursday, September 7
  • Notify Beck Hasti within the first three weeks of classes if:
    • you participate in religious observances that may conflict with course requirements.
    • you have a VISA from the McBurney Disabillity Resource Center.

Course Description:

CS 240 gives an undergraduate-level introduction to discrete mathematics geared towards prospective Computer Science and Electrical and Computer Engineering majors. It covers fundamental concepts of mathematics (definitions, proofs, sets, functions, and relations) and focuses on the discrete structures that are ubiquitous in digital computing: integers, bits, strings, graphs, and trees.

The goal of the course is two-fold:

  • making you familiar with those structures and related notions that are relevant to computer science, and
  • developing your skills to reason rigorously about those structures and notions, especially in an algorithmic context.

Topics: Basic concepts of mathematics (definitions, proofs, sets, functions, and relations) with a focus on discrete structures: integers, bits, strings, trees, and graphs. Propositional logic, Boolean algebra, and predicate logic. Mathematical induction and recursion. Invariants and algorithmic correctness. Recursion, recurrences, and asymptotic growth analysis. Fundamentals of counting. Regular expressions and finite automata.

Prereqs: One semester of calculus (Math 221). It will be useful to have some prior programming experience.

Course Grading:

Final letter grades are determined from your final cumulative score that is computed using the following breakdown:

  • 60% Exams :
    3 exams, 2 during the semester and one during the final exam period each worth 20% of your final grade
  • 34% Homeworks :
    12 homework assignments, the first worth 1%, the other eleven each worth 3% of your final grade
  • 6% Participation :
    zyBook Participation Activities, scheduled to be due prior to that material being covered in lecture

Letter grades are assigned at the end of the semester. The curve is determined after the final exam is completed. The median student's course grade is anticipated to be a low B or high BC.


Below is a tentative schedule of the topics and order in which they will be covered. Course content comes from the lectures and discussion sections as well as a zyBooks E-Text and a set of on-line readings (linked in the schedule below).

Each topic roughly corresponds to one week. See Canvas for the most up-to-date schedule.

  1. Introduction
  2. Propositions and Predicates
  3. Sets
  4. Proofs
  5. Induction
  6. Invariants
  7. Program Correctness
  8. Recursion
  9. Recurrences
  10. Asymptotic Analysis
  11. Relations and Functions
  12. Graphs
  13. Finite State Automata and Regular Expressions
  14. Counting

Getting Started:

Checklist of things to do to get started with the course:

  • Register for the course zyBook
    We will be using an electronic text provided through zyBooks. In addition to readings, it also provides interactive demonstrations and activities that facilitate active learning. Participation activities count towards the participation part of the course grade; challenge activities will be part of the homework assignments.

    1. Use your NetID based @wisc.edu email address to sign up for an account at https://learn.zybooks.com
    2. Enter the zyBook code: WISCCOMPSCIMATH240HastiFall2017
    3. Click Subscribe (cost is $48)
    4. If you've never used zyBooks before, complete the How to Use zyBooks
  • Activate your Piazza Account
    Piazza is a free online tool for asking and answering questions related to CS 240 material.

    1. Follow the Piazza account activation link
    2. Click "Join Classes"
    3. Be careful to include your NetID based @wisc.edu email address when creating this account.

  • Check your schedule for exam conflicts
    The exams are:

    • Exam 1 : Monday, October 16th, 7:15 pm to 9:15 pm
    • Exam 2 : Monday, November 13th, 7:15 pm to 9:15 pm
    • Exam 3 : Wednesday, December 20th, 12:25 pm to 2:25 pm

    If you have a conflict, send email to Beck with the subject "CS 240 Exam N conflict" where N is replaced with the exam number (1, 2, or 3). In the body of the email, please indicate the reason for the conflict (e.g., a Physics 101 lab).

  • Read the Introduction and start working on zyBook Chapter 1 (Getting started: some foundational material).
Last Updated: 9/19/2017     ©2017 Beck Hasti