To extend students' mathematical maturity and ability to deal with abstraction and to introduce most of the basic terminologies used in computer science courses and application of ideas to solve practical problems. At the end of the course, students would have knowledge of the concepts needed to test the logic of a program, have gained knowledge which has application in expert system, in data base and a basic for the prolog language, have an understanding in identifying patterns on many levels and 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.
Introduction to Discrete Mathematical Structures, Formal Methods: Introduction and Analogy, Abstraction, Fundamentals: Sets & Relations- Sets, Types of Sets, Multi Sets, Operations on Sets, Relations and Properties of Relations, Representation of Relations, Equivalence Relation, Closures of Relations, Methods of Proof-Direct Proofs, Indirect Proofs, Mathematical Induction, Method of Contradiction.
Combinatorics: Permutations and Combinations, Pigeon Hole Principle, Principle of Inclusion and Exclusion, Sequence and Series, Generating Functions.
Mathematical Logic, Posets and Lattices: Partial Order Set, Bounding Elements, Well Ordered Set, Topological Sorting, Lattices, Principle of Duality, Bounded, Distributed, and Complemented Lattices, Proposition and Propositional Calculus.
Graphs: Basic Introduction of Graphs- Types of Graphs, Path and Circuits, Eulerian Path and Circuits, Hamiltonian Path and Circuits, Shortest Path Algorithms.
Finite State Machines and Languages: Grammar and Languages- Phrase structure Grammar, Types of Grammars and Languages, Finite State Machines and Languages.