Algorithmics and Programming II

This material is used for the course Algorithmics and Programming II of the Degree Data Science and Engineering.

The lectures of the course are combined with practical programming sessions using a virtual learning environment for computer programming (


1. Introduction  
2. Abstract Data Types (I)  
3. Abstract Data Types (II)  
4. Algorithm Analysis (I)  
5. Algorithm Analysis (II)  
6. Divide and Conquer (I)  
7. Divide and Conquer (II)  
8. Exception handling  
9. Iterating over Data  
10. Linear Containers  
11. Priority Queues  
12. Graphs: Connectivity  
13. Graphs: Shortest Paths  
14. Graphs: A* search  
15. Graphs: Minimum Spanning Trees  
16. Graphs: Maximum Flows  
17. Graph Problem Solving  
18. Trees  
19. Binary Search Trees  
20. Hashing  
21. Cryptography  
Here are some files that contain all lectures of the course in different layouts:
  1 slide/page 2 slides/page 4 slides/page 9 slides/page 16 slides/page

On-line material

Here you can find the material (in English) for some chapters of the course (not necessarily matching the actual contents of this course): recorded videos and powerpoints.


Use this guide (in Catalan) to prepare the exercises that must be presented in the classroom.

Here you can find the solutions of the exercises solved during the lectures (updated periodically):

Lliçons (lectures)

Here you can find snippets of programming lectures by Jordi Petit and Salvador Roura. They contain different algorithms and data structures commonly used by programmers and algorithm designers:


The material contained in this site is the sole property of UPC. This material or any part of it can be viewed, printed, copied or distributed only for personal use or nonprofit educational purposes as long as the copyright notices are not removed.

Page maintained by Jordi Cortadella. Last update: .