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. Memory Management  
9. Containers: Stack  
10. Containers: Queue and List  
11. Graphs: Connectivity  
12. Containers: Priority Queue  
13. Graphs: Shortest Paths  
14. Graphs: Minimum Spanning Trees and Maximum Flows  
15. Trees  
16. Containers: Set and Dictionary  
17. Hashing  
18. Cryptography  
19. Fast Fourier Transform  
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

Attending the lectures

You can see the recorded videos here (only available for UPC students).

On-line material

Here you can find the material (in English) for chapters 11-19 of the course: recorded videos and powerpoints.


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