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. Introduction. Programming paradigms 2. Data structures. Abstract data type (ADT). Examples: Rational ADT, Compex ADT- 2 sessions 3. Dynamic memory allocation 4. Simple linked lists, circulars, stack, and queue. 5. Double Linked lists 6. ADT Trees 7. ADT tables 8. TAD Graphs. 9. Algorithms on graphs. 10. Programming methods. Divide et Impera technique. 11. Greedy method. 12. Branch and Bound method. 13. Backtracking method. - 2 sessions 14. Dynamic programming method.
Learning outcomes
• Implementation and documentation of the software units in high-level programming languages and efficiently used programming environments.
Assessment
• Final evaluation (writen exam) 60%• Laboratory activities portfolio -40%