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. Linear Containers  
9. Priority Queues  
10. Exception handling  
11. Iterating over Data  
12. Graphs: Connectivity  
13. Graphs: Shortest Paths  
14. Graphs: A* search  
15. Graphs: Minimum Spanning Trees and Maximum Flows  
16. Graph Problem Solving  
17. Trees  
18. Binary Search Trees  
19. Hashing  
20. 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.

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: .