Proof Techniques. Mathematical Induction and Recursion Theory.

Mathematical Logic. Propositional and First Order Calculus. Model Theorem.

Programs verifications and Model Checking

Linear Algebra. Matrix Theory in Computer Science.

Boolean Algebra and its applications in Digital Electronics.

Lambda Calculus as a Foundation of Functional Programming

Number Theory and Encryption.

Modern Statistics and Probabilistic Methods in Computer Science.

Functional Analysis and the efficiency of computer algorithms Decision Theory

This course covers **all Mathematics needed** **to become Software Developer**. Here we will discuss Linear Algebra, Modern Analysis, Mathematical Logic, Number Theory and Discrete Mathematics. By the end of this course you **will be able to analyze and describe computer science concepts and methods**. This course is a great opportunity for you to gain deep understanding of all processes a executed in the computer system when programming. The specific objectives of the course are the following:

- Learn how to apply proof techniques to your computer program.
- Learn encrypting and decrypting messages with Number Theory.
- Learn how the software development is related to Discrete Mathematics and Digital Electronics.
- Understand how to use mathematical tools to properly analyze any computer algorithm.
- Learn how to apply Calculus, Probability Theory and Linear Algebra while computing.
- Understand how to apply Lambda Calculus to Functional Programming.

**Discrete mathematics** is the study of mathematical structures that are fundamentally discrete rather than continuous. In contrast to real numbers that have the property of varying “smoothly”, the objects studied in discrete mathematics – such as integers, graphs, and statements in logic – do not vary smoothly in this way, but have distinct, separated values.Discrete mathematics therefore excludes topics in “continuous mathematics” such as calculus or Euclidean geometry. Discrete objects can often be enumerated by integers. More formally, discrete mathematics has been characterized as the branch of mathematics dealing with countable sets (finite sets or sets with the same cardinality as the natural numbers). However, there is no exact definition of the term “discrete mathematics.” Indeed, discrete mathematics is described less by what is included than by what is excluded: continuously varying quantities and related notions.