Fall 2020 - MATH 343 D100

Applied Discrete Mathematics (3)

Class Number: 2825

Delivery Method: Remote


  • Course Times + Location:

    Mo, We, Fr 9:30 AM – 10:20 AM

  • Exam Times + Location:

    Dec 19, 2020
    3:30 PM – 6:30 PM

  • Prerequisites:

    MACM 201 (with a grade of at least B-). Recommended: knowledge of a programming language.



Structures and algorithms, generating elementary combinatorial objects, counting (integer partitions, set partitions, Catalan families), backtracking algorithms, branch and bound, heuristic search algorithms. Quantitative.


This course will be delivered online. You are expected to have access to a reliable internet connection. You will need a computer from which you can download course materials and activities and watch live and/or recorded lectures and participate in live tutorials or workshops.

You will need a camera to take photographs of your work. A phone is acceptable.

This class focuses on combinatorial methods and algorithms for enumerating and generating various combinatorial objects, such as subsets, permutations, partitions, lattice walks, trees, graph traversals etc. For each family F of combinatorial objects, we ask the following. How can we count or generate all the objects of a given size? How can we search for an object with specific properties? Rather than focussing on fancy data structures or algorithm techniques (this would be the topic of a Computer Science class), our goal is to learn how to determine the underlying combinatorial structure of F, and use this information, together with some algebra, to count and efficiently generate the members of F. We will also discuss heuristic algorithms for searching less-structured families. Learning goals: As well as learning the beautiful interaction between recursive definition and polynomial algebra, students will be implementing some of the resulting algorithms using the Maple mathematical programming language, and its combinatorial packages. This software is available for free use to all SFU students. The student may select any of a number of topics for the course project.

Rough lecture schedule:
•    Weeks 1,2,3,4,5: combinatorial specifications, recursive generation, Boltzmann sampling.
•    Weeks 6,7,8: ranking, unranking, lexicographic generation, Gray codes
•    Week 9: trees, Prufer encoding, Lagrange inversion¨
•    Weeks 10,11: backtracking algorithms
•    Weeks 12,13: heuristic algorithms

Course Delivery

  •  Lecture: synchronous- lectures will be held at fixed times, on-line
  •  Midterm(s): synchronous; date: TBA
  •  Final exam: synchronous; date: TBA



  • Assignments 25%
  • Midterm 20%
  • Project 20%
  • Final Exam 35%



  • Access to strong and reliable internet.
  • Ability to scan documents (phone app acceptable)
  • Access to webcam and microphone (embedded in computer sufficient)




Combinatorial Algorithms
Donald Kreher and Douglas Stinson
CRC Press, 1999

Textbook (Instructor's recommendation: Do not buy it) Extensive course notes will be made available, which corrects, and expands on the topics of the textbook related to this course.
ISBN: 9780849339882

Registrar Notes:


SFU’s Academic Integrity web site http://www.sfu.ca/students/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating.  Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the University community.  Academic dishonesty, in whatever form, is ultimately destructive of the values of the University. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the University. http://www.sfu.ca/policies/gazette/student/s10-01.html


Teaching at SFU in fall 2020 will be conducted primarily through remote methods. There will be in-person course components in a few exceptional cases where this is fundamental to the educational goals of the course. Such course components will be clearly identified at registration, as will course components that will be “live” (synchronous) vs. at your own pace (asynchronous). Enrollment acknowledges that remote study may entail different modes of learning, interaction with your instructor, and ways of getting feedback on your work than may be the case for in-person classes. To ensure you can access all course materials, we recommend you have access to a computer with a microphone and camera, and the internet. In some cases your instructor may use Zoom or other means requiring a camera and microphone to invigilate exams. If proctoring software will be used, this will be confirmed in the first week of class.

Students with hidden or visible disabilities who believe they may need class or exam accommodations, including in the current context of remote learning, are encouraged to register with the SFU Centre for Accessible Learning (caladmin@sfu.ca or 778-782-3112).