Overview
Aims
Develop students' ability to design software that is dedicated to solving medium complexity problems.
Deepening the concept of data structure and gaining the skills to design abstract data types and associated libraries.
Creating a rigorous and efficient programming style
Developing students' ability to effectively manage information by using abstract data types and rigorously designing the algorithms to process the data.
Drawing a coherent documentation on the applications of average complexity.
Course contents
1. Review programming paradigms. Moderately complex problems with different data structures, laboratory activities 4h
2. Data structures. ADT Compex implementation. laboratory activities 4h
3. Simple linked lists, circulars lists, stacks, queues. ADT List. laboratory activities 4h
4. Double linked list. laboratory activities 4h
5. Trees. laboratory activities 4h
6. Binary search tree. Operations on trees. laboratory activities 4h
7. ADT tables laboratory activities 4h
8. ADT graphs. Graphs’ representation laboratory activities 4h
9. Algorithms on graphs. laboratory activities 4h
10. Programming methods. Divide et Impera techniques. laboratory activities 4h
11. Greedy method-specific issues laboratory activities 4h
12. Branch and Bound method-specific issues laboratory activities 4h
13. Backtracking method-specific issues laboratory activities 4h
14. Dynamic programming method-specific issues laboratory activities 4h
Learning outcomes
Implementation and documentation of the software units in high-level programming languages and efficiently used programming environments; ability to identify and design ADT
Assessment
Course Final evaluation Written paper 60%; Seminar/laboratory Continuous assessment - Laboratory activities portfolio 40%