A0L268Q Discrete Mathematics

(2 Credits, 32 Hours; Course Category: Required Course; Specialty: Software Engineering; Prerequisite: Basic Calculus (B)I, Geometry and Algebra(B), Basic Calculus(B)II, Basic Computer Calculus Programming)
Discrete mathematics is the foundation of computer science and software engineering. This course provides an overview of the branch of mathematics commonly known as discrete mathematics. It is intended for Computer Science and Software Engineering majors.
The topics covered are sets, logic, relations, functions, proofs, induction, trees, and graphs.
This course has two major goals: to learn the essential mathematic concepts and ideas in discrete mathematics, and to increase students’ sophistication and ability in handling abstract problems.
Students will learn the essential mathematic concepts and ideas in discrete mathematics, which are required for rigorous studies in most areas in computer science and software engineering. After completing this course satisfactorily, a student will:
(1) Be able to construct simple mathematical proofs and possess the ability to verify them;
(2) Be able to understand logical arguments and logical constructs;
(3) Be able to investigate discrete structures, including sets, matrices, permutations, relations, graphs and trees;
(4) Be aware of a class of functions which transform a finite set into another finite set which relates to input /output functions in computer science and software engineering;
(5) Develop analytical skills used to solve problems concerning the logical structure of computer software;
(6) Possess the mathematical knowledge and maturity that are required for upper level computer science and software engineering courses.
Our objectives in the course are to train the students to look at problems precisely, to grasp the essence of problems at hand, and to learn the techniques to solve them. Although the definitions, lemmas, theorems, corollaries, etc., are also of vital importance to students’ study of computer science, we really hope that the students will gain the ability of solving new problems independently from this course. We do not want students just to memorize the solutions of the problems because that's too simple a task for anybody. Rather, we want the students to understand how the problems are solved because that is the most interesting part of the course.
Furthermore, we also wish to make the students comfortable with writing rigorous proofs. Though proof techniques are important, it is equally important for the students to learn the skills of writing rigorous proofs at this stage. The students are asked to write answers in homework and in exams very carefully.