Programming Laboratory 2

Programming Laboratory 2

Credits

6

Prerequisites

Programming Laboratory.

Scientific-disciplinary sector (SSD)

INF/01 Computer Science.

Examination method

Laboratory work, oral exam.

Learning
objectives

The course aims to provide an in-depth study of modern methodologies and tools, as well as of hardware and software computing environments, for the development and analysis of algorithms. Laboratory work is an integral part of the course.

Syllabus

  • Dynamic data structures and recursive algorithms: lists, stacks, queues and trees. Algorithms for managing dynamic data structures. Recursive algorithms. Examples of recursive algorithms for searching and for managing lists and trees.
  • Structure and functionality of operating systems. Evolution of operating systems. Process and thread management. Process and thread synchronisation: classic process synchronisation problems. Memory management. Virtual memory and hierarchical memory.
  • Multithreaded programming and introduction to high-performance computing. The role of cache memory and its influence on algorithm performance. Introduction to high-performance computing: the matrix product.

Expected learning
outcomes

On completion of the course, students must demonstrate that they

  • know and understand how advanced tools for the design, development and analysis of algorithms work, as well as the structure and operation of the main subsystems of modern operating systems;
  • can apply this knowledge to the independent development of algorithms and programs of increasing difficulty, including on modern multicore architectures;
  • can communicate ideas and solutions clearly, rigorously and effectively to both specialist and non-specialist audiences;
  • can identify the most appropriate methods to analyse and solve a problem relating to the course topics and interpret the results correctly.

Learning outcomes
to be assessed

Ability to develop algorithms and programs of varying difficulty; clarity, correctness and completeness in the written and/or oral presentation of the course topics.