Methods for programming
- UE code IHDCB331
-
Schedule
30 30Quarter 1
- ECTS Credits 10
-
Language
Anglais
- Teacher Schobbens Pierre-Yves
The student will be able to :
- formalize a problem described informally ;
- systematically build a correct and efficient program solving this problem.
Learn rigourous methods for efficient algorithm construction.
We base our methods on formal proofs, of runtime and memory consumption. We use recursivity systematically. The methods selected are: 1- divide-and-conquer 2- memoization and dynamic programming 3- the greedy method 4- generate-and-test.
We study the main data structures : lists, hash tables, trees, binary search trees, red/black trees, B-trees.
Part O. Specification by pre- and post-conditions, of proofs by invariants and variants. Runtime evaluation (complexity). Recursivity.
Part I. Programming methods: 1- divide-and-conquer 2- memoization and dynamic programming 3- the greedy method 4- generate-and-test 5- constraint-based programming 6- heuristic methods
Part II. Data structures. Data types. Lists. Hash tables. Binary search trees. Red-black trees. B-trees.
70% A written examination, where new problems are posed and new, efficient solutions should be discovered by the students on basis of the methods learned in the course.
The rest will be evaluated through a project and small assignments.
The course follows a selection of chapters from: Introduction to Algorithms ( Second Edition), T. Cormen, C. Leiserson, R. Rivest, C. Stein, MIT Press.
Training | Study programme | Block | Credits | Mandatory |
---|---|---|---|---|
Bachelor in Computer Science (Evenings and Weekends Schedule) | Standard | 0 | 10 | |
Bachelor in Computer Science (Evenings and Weekends Schedule) | Standard | 3 | 10 |