In this course, we will study the necessary concepts and techniques in discrete mathematics that are centeral
in the applications in computer science and engineering. Discrete mathematics is one of the most important fundations
of a majority of computer science and engineering courses such as artificial intelligence, algorithms and data structure,
programming languages, formal language and automata, cryptography, etc.. This course is required for admission to the
CSci major and is a prerequisite for many more advanced CSci classes. We will cover propositional and predicate logic,
proof methods, sets, functions, sequences, summation techniques, integer and matrix algorithms, asymptotic analysis
and big-Oh notation, recursion and induction, counting methods, recurrences, discrete probabilities, and graphs.
The expectation is that after taking the course students will understand how to think mathematically and logically,
and use mathematical reasoning and other techniques to solve a variety real world problems.