The course aims to expose students to some advanced programming techniques and constructs, to demonstrate their application in solving specific problems and to stimulate and improve their critical thinking when applied in the resolution of even complex problems.
Expected learning outcomes
These objectives are measured via a combination of three components: the project realisation, the project technical report and the oral discussion. The final grade is formed by assessing the software developed, the project report, and then using the oral discussion for fine tuning.
Lesson period: First semester
(In case of multiple editions, please check the period, as it may vary)
Comprehensions, Map/Filter and Reduce Closures, Continuations and Lazy Evaluation (Generators) Type Inference and Type Systems Dynamic e Duck Typing Object-Based vs Object Oriented Language Late binding versus Duck typing Iterators Test Driven Development Generative programming Decorators e Metaclasses
Prerequisites for admission
Knowing how to write and debug programs that use the basic constructs of programming. Knowing how to solve an algorithmic problem. Knowing at least one programming language.
It is strongly suggested to have passed at least one exam about programming in the bachelor degree and one about algorithms and data structures
Frontal lectures and some exercises in the exam preparation.
Suggested Books - Jennifer Campbell, Paul Gries, Jason Montojo, and Greg Wilson. Practical Programming: An Introduction to Computer Science Using Python. The Pragmatic Bookshelf, second edition, 2009. - Mark Lutz. Learning Python. O'Reilly, third edition, November 2007. - Mark Pilgrim. Dive into Python 3. Apress*, 2009. The first two are for those that needs to learn Python or to strength their basic programming skills. The last one covers most of the course program.
Assessment methods and Criteria
The exam is written (at the computer) and it will last 4 hours. Each session proposes two exercises that test the advanced programming/problem solving techniques the student learned during the course.