Programming Laboratory

Programming Laboratory

Credits

8

Prerequisites

None

Scientific-disciplinary sector (SSD)

INF/01 Computer Science

Examination method

Laboratory activities, written exam (exercises and numerical problems, possibly multiple-choice) and/or oral exam.

Learning
objectives

The course aims to provide an introduction to the methodologies for the design, development and analysis of algorithms (mainly non-numerical), as well as to the use of the main computing tools (hardware and software), with particular regard to the influence that the latter have on the development of the algorithms themselves. Laboratory activities are an integral part of the course.

Syllabus

The concept of algorithm and the Von Neumann machine, the representation of data and instructions, data structures (variables and arrays) and control structures (iteration and selection) for the development of algorithms. Fundamental non-numerical algorithms (sorting, searching, merging and basic operations on matrices and vectors). Computational complexity of algorithms. Floating-point arithmetic, outline of the stability of algorithms and stopping criteria. Basic software tools for scientific computing (operating systems with particular regard to Linux, the Fortran 90 and C programming languages).

Expected learning
outcomes

At the end of the course, students must demonstrate that they:

  • know and understand the general issues relating to the design, development and analysis of non-numerical algorithms, as well as the influence that the computing environment has on these algorithms;
  • are able to apply this knowledge to the independent development of algorithms and programs of moderate difficulty;
  • are able to communicate ideas and solutions clearly, rigorously and effectively to both specialist and non-specialist audiences;
  • are able to identify the most appropriate methods to analyse and solve a problem related to the course topics and to interpret the results correctly.

Learning outcomes
to be assessed

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