For each syllabus lesson some theoretical results have been set as required to pass this course. Those results can be either definitions, or theorems, or algorithms. Problems students have to be able to solve have been classified into two categories:

  • Problems of basic content:  Those basic problems that can be solved by directly applying a definition, a formula, or an algorithm are called basic contents.
  • Problems of advanced content: This kind of problems requires some previous modelization and/or interpretation, after which the problem is solved by applying a pertinent combination of basic techniques.

A table with the whole list of basic and advanced contents can be checked by clicking HERE or they can be checked below.



For each lesson the student must achieve the specified goals below. Apart from the goals set for each lesson, solving problems requiring a pertinent combination of several concepts, techniques, and algorithms is also considered as an advanced goal.


  1. Identify subsets of a set, and use the symbols for set membership and set inclusion.
  2. Define basic set operations: union, intersection, complement, and perform them in simple cases.
  3. Define the Cartesian product of two sets and obtain that product for two finite sets.
  4. Define map and function as well as injective, surjective and bijective map.
  5. Identify maps on sets of small cardinality and determine where the map is injective, surjective or bijective.
  6. Determine the image of a set with similar characteristics to the previous item.
  7. Define map and function composition.
  8. Compute maps and map composition.
  9. Define inverse map and check that a given map is the inverse of another map.
  10. Define a relation on a set, and define reflexive, symmetric, antisymmetric, and transitive relation. Define equivalence relation.
  11. Determine from a graphical representation whether a relation is a reflexive, symmetric, antisymmetric, and transitive, and in certain simple cases, whether the relation is of order or equivalence
  12. Define equivalence class and quotent set.
  13. Obtain a canonical representative and find its equivalence class.
  14. Describe quotient set Zn as well as the elements of its classes.
  15. Define comparable and non-comparable elements in an order relation.
  16. Define total order, partially ordered set (poset), and distinguish those two concepts through their sagittal diagram.
  17. Obtain the Hasse diagram of an order relation on a finite set.
  18. Obtain the maximal and minimal elements as well as the maximum and minimum of an order relation out of the Hasse diagram.
  1. Obtain the power set of a finite set.
  2. Determine whether a map is injective, surjective, or bijective map.
  3. Obtain the explicit expression of the inverse of a given map.
  4. Determine whether a relation is of order or equivalence.
  5. Obtain the quotient set of an equivalence relation.
  6. Build the Hasse diagram of an order relation described by a set builder.



  1. State the basic principles of counting: sum rule, product rule and inclusion-exclusion principle.
  2. Define the diferent ways to count objects: r-permutations, k-combinations, with and without repetition.
  3. Solve problems on combinatorics by using all the previous counting techniques: r-permutations, k-combinations, with and without repetition.
  4. Apply the basic principles of counting to simple cases.
  5. Get acquainted with and correcty apply Newton’s Binomial Theorem.
  6. Build Pascal’s triangle and work out its relation to binomial coefficients.
  7. Solve discrete probability problems by applying Laplace’s inductive probability.
  1. Solve problems of similar difficulty to the ones posed in class, where the main tools are the basic principles of counting.
  2. Use recursive techniques to counts the elements of a set.
  3. Solve probability problems of similar difficulty to the ones posed in class; they include combinatorics techniques and Laplace’s inductive probability.



  1. Formalize statements by using propositional logic.
  2. Determine the main connective of a formula and obtain its structural tree.
  3. Compute functions defined by using the structural recursive principle.
  4. Compute the truth value of a given formula for a given valuation.
  5. Define model and non-model.
  6. Obtain models for a given formula.
  7. Define tautology, contradiction, satisfiable formula and contingent formula.
  8. Determine whether a formula is tautology, contradiction, satisfiable, or contingent.
  9. Define logically equivalent formula, and apply basic equivalences.
  10. Define satisfiable and unsatisfiable set.
  11. Determine whether a set of formulae is satisfiable by using the method of the analytic tableaux.
  12. Define a deductive argument.
  13. Define counterexample.
  14. State correctly the basic inference rules.
  15. Determine whether a deductive argument is correct by using the method of the analytic tableaux.
  16. Show that a deductive argument is correct by using inference rules.
  17. Show that a deductive argument is incorrect.
  1. Formalize sentences written in natural languages, and determine whether the deductive argument associated with it is correct.
  2. Define functions by using the structural recursion principle.
  3. Determe whether a set of formulae satisfies certain conditions.
  4. Use the characterization of a correct deductive argument in terms of satisfactibility to study properties of a set of formulae.
  5. Prove that a deductive argument is correct by using inference rules.



  1. State the differente versions of the induction principle.
  2. Show by induction that two expressions (two sets, or two functions) depending on a natural number are the same. Show by induction that two functions, one defined recursively and the other defined explicit, are actually the same function.
  3. Operate with elementary list functions (head, tail, rest and concatenation).
  4. Prove by induction that two list functions, one defined recursively and the other defined explicitly, are actually the same function.
  5. Define initial set, basis case, and recursive case of a recursive function.
  6. Compute the initial set of a recursive function.
  7. Compute the value of function at a point and find its dependency tree.
  8. Define simple recursive functions on natural numbers and plain lists.
  1. Make conjectures about a general expression depending on a natural number. Show by induction that it is correct, as done in the problem set.
  2. State the strong induction principle.
  3. Define recursive functions on natural numbers and lists, as done in the problem set.
  4. Recognize the set obtained by giving a recursive definition.
  5. Describe the behaviour of a function defined recursively.
  6. Given a recursive case, propose a basis case, when possible, so that a recursive function is obtained.



  1. Model a given problem by choosing the most suitable type of graph.
  2. Define regular graph and bipartite graph; determine whether a graph has those properties.
  3. Find the number of vertices and edges of the following families of graphs: Kn, Kn,m, Qn, Cn y Pn.
  4. Recognize the basic properties of the following families of graphs: regular, Eulerian, bipartite, and Hamiltonian.
  5. State and apply Euler’s formula (the one connecting degree of vertices and number of edges).
  6. Find the subgraph induced by a set of vertices, and the subgraph obtained by removing vertices or edges.
  7. Distinguish walk(path)/trail(simple path) and circuit/simple circuit.
  8. Define Eulerian graph and semi-Eulerian graph.
  9. Apply Euler’s theorem to determine whether a graph is Eulerian/semi-Eulerian.
  10. Build a Eulerian circuit on a graph, if exists.
  11. Define Hamiltonian graph.
  12. Define isomorphic graphs, and state invariant properties under isomorphisms.
  13. Establish isomorphisms between two graphs in simple cases.
  14. Justify why two graphs cannot be isomorphic in simple cases.
  15. Recognize graphically bridges, cut vertices and connected components of a graph.
  16. Recognize a tree through any of its characterizations.
  17. Apply the formula connecting the number of vertices and connected components of an acyclic graph.
  18. Determine a mininum spanning tree of a graph.
  19. Describe briefly the steps of Kruskal’s algorithm.
  20. Apply Kruskal’s algorithm to obtain a minimum spanning tree of a weighted graph.
  21. Apply Dijkstra’s algorithm to find the distance from a vertex to the rest, along with a minimum path tree.
  22. Distinguish between minimum spanning tree and minimum path tree.
  23. Define and distinguish center and median.
  24. Compute the center and the median of a given graph.
  25. Distinguish between maximal element and maximum, and minimum and minimal element, and recognize those elements on a acyclic digraph.
  26. Describe an algorithm to detect whether a finite digraph is acyclic, and apply it to find a topological ordering.
  27. Find topological ordering compatible with certain constrains or prove otherwise.
  28. Model through a digraph a dependency relation for a task planning problem. Find whether a set of task can be accomplished.
  29. Find for a graph with weighted task, the minimum time to accomplish them.
  1. Determine whether a graph is Hamiltonian.
  2. Determine whether two graphs are isomorphic.
  3. Solve problems involving distances between vertices of a weighted graph by using Dijkstra’s algorithm.
  4. On an optimization problem recognize the following: minimum spanning tree, minimum path tree, center/median of a graph, center/median constrained to a set of vertices.
  5. Build set of graphs holding certain properties, or prove otherwise.
  6. Determine whether a given task planning is correct to accomplish a set of tasks; find its the minimum time to be accomplished.
  7. Find the lower bound on the number of computers to accomplish a given set of tasks in optimal time.
  8. Use the heuristic algorithm covered in class to obtain an approximation to a planning with a minimum number of computers.
Go to top