- To imagine and realize a correct and efficient algorithm to solve a given problem
- To understand, choice and apply various methods to design programs in order to realize and demonstrate the exactness of complex algorithms
Main themes
- Methods to design and prove programs : invariant methods, wp calculus, induction on structures.
- Program transformations and techniques used to improve the efficiency
- Program schemes and problem classes: global research schemes (backward path, selection and evaluation, binary research), local research schemes (voracious strategy; gradient research, simulated annealing), structural reduction schemes (split to reign, dynamic programming, relaxation, constraints).
Content and teaching methods
see "Main themes"
Other information (prerequisite, evaluation (assessment methods), course materials recommended readings, ...)
- Prerequisite
(1) SINF1150 (Easier if SINF1121 is followed concurrently).
- Reference
(1) Liskov, B.., "Program Development in Java: Abstraction, Specification, and Object-Oriented Design." , Addison-Wesley, 2001.
(2) Goodrich M.T. & Tamassia R, "Data Structure and Algorithms in Java." , Second Edition, John Wiley & Sons, 1997.
- Organization
Active learning through problem solving in small groups