@inproceedings{10c70b50fb544e0ea331b9d62ad74f39,
title = "Discrete Math with Programming: A Principled Approach",
abstract = "Discrete mathematics is the foundation of computer science. It focuses on concepts and reasoning methods that are studied using math notations. It has long been argued that discrete math is better taught with programming, which takes concepts and computing methods and turns them into executable programs. What has been lacking is a principled approach that supports all central concepts of discrete math-especially predicate logic-and that directly and precisely connects math notations with executable programs. This paper introduces such an approach. It is based on the use of a powerful language that extends the Python programming language with proper logic quantification ({"}for all{"}and {"}exists some{"}), as well as declarative set comprehension (also known as set builder) and aggregation (e.g., sum and product). Math and logical statements can be expressed precisely at a high level and be executed directly on a computer, encouraging declarative programming together with algorithmic programming. We describe the approach, detailed examples, experience in using it, and the lessons learned.",
keywords = "discrete math, language, logic, programming, sets, teaching",
author = "Liu, \{Yanhong A.\}",
note = "Publisher Copyright: {\textcopyright} 2021 ACM.; 52nd ACM Technical Symposium on Computer Science Education, SIGCSE 2021 ; Conference date: 13-03-2021 Through 20-03-2021",
year = "2021",
month = mar,
day = "5",
doi = "10.1145/3408877.3432537",
language = "English",
series = "SIGCSE 2021 - Proceedings of the 52nd ACM Technical Symposium on Computer Science Education",
publisher = "Association for Computing Machinery, Inc",
pages = "1156--1162",
booktitle = "SIGCSE 2021 - Proceedings of the 52nd ACM Technical Symposium on Computer Science Education",
}