Most importantly, the course is meant to develop your
analytical and problem solving skills.
You cannot rely on either rote learning or
plug-and-chug, or a follow-the-recipe approach.
For many of you, this course will be quite different
from any course you have taken so far: it will actually
require you to think logically and systematically ,
and communicate these thoughts clearly.
Towards this end, the lectures will devote a large amount of time on
problems and proofs; I will try to introduce
new material and new definitions
by introducing a problem and working
backwards, teaching you to acquire the necessary (new)
knowledge to solve the problem.
You will find yourself
having to follow such a process in most future courses and jobs that require
problem solving, and this course
will train you for that.
In addition, all the questions listed above specifically require knowledge of Discrete Mathematics, a well-defined mathematical area. Discrete Mathematics is the study of the structure and properties of finite sets of objects. It encompasses a vast amount of mathematics, including combinatorics, logic, discrete probability and stochastic processes, number theory, finite algebra, group and field theory, graph theory, finite geometry, game theory etc..
In addition, you need Discrete Mathematics to solve most optimization problems, design and analyze algorithms, and reason about computation, information and randomness, both at a basic or philosophical level, and for concrete applications These skills are employed not just in CS, but in just about every aspect of modern life and science. For example, have you ever heard of Bioinformatics which attempts to explain biological phenomena from the point of view of information and computation? And you may have heard of the use of information and computation to explain physical phenomena including chaos, the second law of thermodynamics and many quantum mechanical phenomena.