| Topics | Assignments | Coq | Summaries | Presentations | Sources |
Semester: Spring 2021
Syllabus: [MS DOCX]
Course Code: PBM 763 (for Course Search in ORTUS)
Creditpoints: TBD
Course Home: BITL.LV
Please read the relevant subchapters from the textbook (see below).
The link to the textbook (Kenneth Rosen. Discrete Mathematics, 2019) is in ORTUS.
See also
the Playlist below are by
Kimberly Brehm.
This subsection should introduce all 5 Boolean connectors (\( \neg \), \( \wedge \), \( \vee \), \( \rightarrow \), \( \leftrightarrow \)), their truth tables.
Solve some word problems with propositional logic. We should pay special attention to cases where the connectors can be misunderstood or their everyday meaning differs from the formal one.
Perform equivalent transformations of Boolean expressions (here we use equivalences not as Boolean connectors that may sometimes return “False”, but as a way to write Boolean identities that are universaly true).
Also solve satisfiablility of Boolean problems in a more general sense - even when they are not equivalences.
This subsection introduces predicates as expressions depending on variables and "naive" concept of quantifiers (universal quantifier is just a long conjunction; existential quantifier is just a long disjunction)
This section does not cover much new material; it is useful as a reminder - how to use the first order logic to explain everyday situations.
This section is meant to introduce some Aristotelian and other traditional logic reasoning (modus ponens, substitution, etc.) and other rules of inference. Only simple cases are shown; we do not show the tricky cases of inference; do not differentiate between constructive and non-constructive logic at this point.
This subsection should introduce the basics of human-readable proofs with simple logical structure (and without overly complicated mathematics). We illustrate IF-THEN and IF-AND-ONLY-IF types of statements with results from elementary geometry, algebra, number theory or real analysis. (It is highly desirable to choose examples that may be familiar to the participants.)
Introduce proof techniques that reflect simple logical structure of the statement (for example analyzing cases would mean a generalization/universal quantifier over some finite set of cases;
This subsection only cares about set notation, defining new sets via subset and tuple (pair, tripple, etc.) constructions.
This subsection is a refresher of the Boolean operations, since set operations for a given universe closely resemble Boolean operations (set intersection is same as conjunction, etc.)
Nearly every topic in mathematics is somehow related to functions; here we only explain some set-theoretical properties of functions - defining domain, range, some properties (one-to-one, onto, bijection), also inverse and composition of two or more functions.
This subsection introduces simple sequences and also notation (long sums, products, Boolean operations, set unions/intersections) to manipulate them.
This subsection discusses comparing sizes of two sets; it is essential to develop intuition on which problems can be formalized and which ones are algorithmically solvable.
Matrices are rectangular tables of objects of some kind (usually numbers or truth values); this subsection shows how they can be used to describe functional dependencies between elements in two sets - e.g. linear transformations; directed graphs; relations on a given set - all these situations will need them. At this point it is just an introduction for the matrix notation and some simple manipulations on them.
In the subsection we introduce various concepts related to algorithms: input, output, pseudocode, execution time, underlying variables and data, proofs of correctness.
This subsection is preoccupied by the growth asymtotics, it introduces various growth rates (Big-O-Notation) and also the related Omega and Theta notations.
This subsection combines two previous ones – we analyze the pseudocode of an algorithm and come up with an estimate of how many operations it takes (up to a constant factor and addition with terms of smaller growth order).
This subtopic only focuses on modular arithmetic (properties that are preserved when finding remainders during division by a fixed positive integer \( m \)).
In this subsection we convert decimal to binary and similar numbering systems.
This subtopic introduces algorithms related to primality, divisibility and finding GCD or LCM.
Show how to solve linear congruences (or systems of linear congruences as in the Chinese Remainder theorem)
The only subsection on the applications of number theory focuses on algorithms to compute hash functions and also the checksums designed to ensure the integrity of data. (There are other major applications, say, in cryptography, but we do not care, since the course has sufficiently large scope already.)
This subsection explains the very basic scheme of induction (prove the statement for \( n=0 \) or \( n=1 \), then prove it by advancing one step at a time).
Define and prove statements by induction, where it is essential to look back more than one step.
Define and prove inductive statements that can be defined on expressions and/or tree-like structures.
This subsection only discusses binary relations at a general level.
The subsection adresses somewhat marginal topic of n-ary relations, but it is still important, since it forms the basis of relational databases (RDBMS) such as MySQL or Oracle. We try to illustrate it with in-memory databases (such as Pandas library).
This subsection discusses advantages for each representation and what things can be computed for each one.
The subsection introduces the concept of closure (as the “smallest” of all possible subsets with the given property). One particularly useful subtype of closure is the transitive closure.
This subsection discusses a very useful subspecies of relations – equivalence relations; and how they can be used to structure the set where they are defined.
This subsection addresses a set with a common relation – that of a partial order (which is also reflexive, antisymmetric and transitive, but two elements may also be incomparable).
The subsection shows easy principles to evaluate the number of various selections (and they generalize lots of specialized formulas)
Subsection discusses a simple idea of a proof by contradiction also known as the Dirichlet principle (if there are n+1 objects and n boxes, then at least one box should have at least 2 objects) and some variants of this.
This is similar to 6.1, but we revisit the material and show how to compute some well-known selections (permutations and combinations with or without repetition).
This is similar to 6.1, but we revisit the material and show how to compute some well-known selections (permutations and combinations with or without repetition).
This subsection is a summary that discusses how the symmetry in a problem (distinguishable or indistinguishable objects, their order, their repetitions) affect the total count.
This subsection introduces the simplest notion of probability for discrete (i.e. countable) events. Use assumptions that all elementary events have equal probabilities.
This chapter introduces all the fundamental concepts of discrete probabilities once they have been defined.
The subsection shows a very practical way to express unknown conditional probabilities using directly observable ones (which show the “opposite” conditional probabilities).
There are many ways to summarize larger amounts of numeric data (including median, inter-quartile range, mode, etc.), but here we only deal with the two simplest measures. Expected value (also mean and expectation) is defined for a random variable and it expresses the location. Variance (dispersija) and its square root – standard deviation (standartnovirze) measure the variability of data – how far it goes from the mean value.
The subsection shows how real-life problems can be converted into recurrent sequences; their definitions and closed formulas for these sequences (a closed formula is an explicit expression to compute the n-th member of a sequence without going through all the recurrent members preceding it.
Homogeneous and nonhomogeneous linear recurrences have some general methods to solve them (characteristic equations that allow to determine, what part of the sequence grows like a geometric progression). Fibonacci series is the best known linear recurrence, but there are many others.
Some practically important recurrences (and related algorithms) are based on subdividing task into parts (and then reassembling their solutions with some additional cost). There is a famous theorem that solves this recurrence (and has three subcases) – it is called Master’s Theorem.
Some counting tasks are more easily solved for the intersections (not unions) of multiple sets. If we need to solve them for unions, it is possible to count the union by adding the counts for individual sets, then subracting (and/or subsequently adding) for those cases where something has been counted twice, three times, etc.
This subsection explains obvious and less obvious situations where graphs may provide an answer to combinatorial questions.
The subsection focuses on identifying specific phenomena in graphs and also introduces additional restrictions on graphs (connected, bipartite, directed, planar, acyclic and so on) which lead to different parts of the theory.
The subsection compares two approaches to store graphs (such as using them as input for programs), and when to use each one. It also discusses the “invariant” properties of graphs that do not depend on their representations - isomorphic graphs may be considered equivalent – regardless of how they are represented and how their vertices are labeled.
The subsection defines connectivity for undirected and also directed graphs (included strong connectivity). It also shows how this is related to finding path or paths between given vertices.
This subsection introduces computationally easy problem (Euler’s cycles) and computationally hard problem (Hamilton’s cycles) – and how each one of them may be used.
The root, inner nodes, leaves, ancestors and successors, paths, traversals – all these tree-related concepts are often needed when using hierarchies of various kinds. This subsection defines the concepts and also counts all such objects efficiently.
There are a few standard orders how to visit nodes in a tree (DFS is somewhat similar to visiting a labyrinth – and it also has three separate flavors). All these orders are important as they serve as building blocks to various algorithms.
This section deals with MSTs – a concept applicable to an arbitrary connected graph with a tree (basically, which edges do we select from a given graph, so that it is a spanning tree (still connected graph, but does not contain any redundant edges – there are no loops).