Syllabus for the mid-term exam: Everything that we have studied so far. 1. Operations on Boolean functions, co-factors, smoothing, consensus, Boolean difference, generalized cofactors of Boolean functions 2. Unate and binate functions 3. SAT and UNSAT problems -- Equivalence checking with a miter -- Craig interpolants 4. Binary Decision Diagrams: -- The whole of chapter 6 in textbook. -- Algorithms and complexity of ROBDD construction. 5. Two-level logic optimization: -- Primality, Irredundancy, minimum cardinality of covers of Boolean functions -- Redundancy and it's effect on stuck-at fault testability -- Recursive Computation of Primes -- The Table covering problem [Unate covering, branch and bound, lower and upper bounds] -- The whole of Chapter 4, EXCEPT section 4.10, you can ignore it. -- Heuristic Minimization [Chapter 5, up to Sec 5.4] -- Unate Recursive Paradigm [Expand, Reduce, Irred, Essential operations of Espresso] 6. Boolean decomposition: -- Simple Disjunctive Decomposition of the Ashenhurst type -- K-map based, column multiplicity = 2 -- BDD-based, cut-set nodes, etc. -- Generalize from simple disjunctive decomp to Curtis type decomp, where column multiplicity > 2 Note: All these concepts are given in the textbook, or on my slides on the class website.