Students are presumed to be familiar with basic programming techniques, including the use of functions and procedures, loops and recursion. Also assumed is facility with basic algebra.
Students are also expected to be familiar with the use of standard Internet-based tools including e-mail.
Course objectives
- Cultivate clear thinking and creative problem solving.
- Thoroughly train in the construction and understanding of mathematical proofs. Exercise common mathematical arguments and proof strategies.
- Cultivate a sense of familiarity and ease in working with mathematical notation and common concepts in discrete mathematics.
- Teach the basic results in Mathematical Logic, Set Theory, and Relations.
Student objectives
At the end of the course, students should:
- Understand fundamental mathematical concepts as they apply to computer science by seeing how mathematics supports CS, and how CS concepts can be formalized in mathematics
- Illustrate by examples the basic terminology of functions, relations, and sets and demonstrate knowledge of their associated operations.
- Establish and solve recurrence relations that arise in counting problems including the problem of determining the time complexity of recursively defined algorithms.
- Model logic statements arising in algorithm correctness and real-life situations and manipulate them using the formal methods of propositional and predicate logic.
- Outline basic proofs for theorems using the techniques of: direct proofs, proof by counterexample, proof by contraposition, proof by contradiction, and mathematical induction.
- Relate the ideas of mathematical induction to recursion and recursively defined structures.
- Enhance one’s ability to program by seeing how mathematical concepts form the basis for many common programming problems (e.g. grammars for parsing, predicate calculus for logic programming, sets and algebras for relational databases, graphs and topological sorting for automating optimization).
- Further their ability to write large programs by integrating code from a diverse spectrum of program components.
Grading procedures
The overall grade for this course is based on your performance in (i) exercises, (ii) assignments, (iii) mid-term exam and (iv) final exam, with weights as given below. Exams consist of a midterm and a final exam.
Course component grading weight (it can be changed):
- Midterm: 20%
- Weekly homework: 40%
- Final: 40%
Content information
First we learn a general methodology for solving problems. This methodology is going to be followed in solving problems, and in proving theorems throughout this course.
The next subject is logic. Logic subject matter is covered in Chapter 1 of the textbook. “Logic” is a language that captures the essence of our reasoning, and correct reasoning must follow the rules of this language. We start with logic of sentences called propositional logic, and study elements of logic, (logical) relationships between propositions, and reasoning. Then we learn a little more powerful logic called predicate logic. Predicate logic allows us to reason with statements involving variables among other statements.