This second semester course complements the general vision of the area. It provides the background that engineers require.
The first half is dedicated to more advanced aspects of algorithms and programming. The second half introduces new themes (object oriented programming, concurrency, parsing, etc.). An important part of the course is the writing of a programming project, part of which will be carried out through lab work. This programming assignment requires individual work.
Introduction to object-oriented programming, modularity, revision control, dynamic programming, exhaustive searches, greedy algorithms, advanced data structures (graphs, balanced trees), graph traversals (depth first, breadth first), connectivity testing, topological sort, shortest path, minimal spanning trees; introduction to finite automata theory, formal grammars and parsing; introduction to concurrent and distributed programming (critical sections, semaphores); introduction to propositional logic; introduction to logic; Hoare's method.
Last Modification : Tuesday 7 July 2009


