20410336 - IN110 - Algorithms and Data Structure

Provide a good knowledge in the design of algorithms for the solution of problems and in algorithm coding with a programming language (C language). Introduce the student to some of the fundamental concepts of discrete mathematics (with brief overview on graph theory) and in particular to the basic elements of discrete optimization (optimization algorithms on graphs, visit of graph, shortest paths, spanning trees).

Curriculum

teacher profile | teaching materials

Programme

Introduction to the different aspects of the study of computer science; the concept of algorithm; the calculator; programming languages. Model of Von Neumann, model of the Turing machine. Representation of information on a computer. Notes on operating systems and the Unix / Linux operating system.
Algorithms and their properties; languages for algorithm formalization: flow diagrams and pseudo-coding. Introduction to programming, high level programming languages. Structured programming.
C language: data types, operators and expressions, control structures, arrays and pointers, structures, lists, dynamic memory allocation, functions, recursive functions, preprocessor directives, input and output.
Sorting algorithms; complex data structures, heaps, lists, trees, graphs; elementary algorithms on graphs, visit graphs, excellent paths on graphs. Notes on the computational complexity of algorithms; notes on calculability: treatable, intractable problems, class P, NP, NP-complete.


Core Documentation

Cormen, Leiserson, Rivest, Stein, "Introduction to algorithms", third edition, The MIT Press, 2009
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.


Type of delivery of the course

Frontal lectures and interactive laboratory exercises for algorithm coding in C language.

Type of evaluation

The oral exam, in which some of the problems and algorithms discussed in the course are discussed, is preceded by a written test in which is asked to design and to develop some C language programs in order to solve the problems assigned. The written test can be avoided by passing the two exoneration exams.

teacher profile | teaching materials

Programme

Introduction to the different aspects of the study of computer science; the concept of algorithm; the calculator; programming languages. Model of Von Neumann, model of the Turing machine. Representation of information on a computer. Notes on operating systems and the Unix / Linux operating system.
Algorithms and their properties; languages for algorithm formalization: flow diagrams and pseudo-coding. Introduction to programming, high level programming languages. Structured programming.
C language: data types, operators and expressions, control structures, arrays and pointers, structures, lists, dynamic memory allocation, functions, recursive functions, preprocessor directives, input and output.
Sorting algorithms; complex data structures, heaps, lists, trees, graphs; elementary algorithms on graphs, visit graphs, excellent paths on graphs. Notes on the computational complexity of algorithms; notes on calculability: treatable, intractable problems, class P, NP, NP-complete.


Core Documentation

Cormen, Leiserson, Rivest, Stein, "Introduction to algorithms", third edition, The MIT Press, 2009
A. Bellini, A. Guidi, "Linguaggio C", quarta edizione, McGraw-Hill, 2009.
M. Liverani, "Programmare in C", seconda edizione, Esculapio, 2013.


Type of delivery of the course

Frontal lectures and interactive laboratory exercises for algorithm coding in C language.

Type of evaluation

The oral exam, in which some of the problems and algorithms discussed in the course are discussed, is preceded by a written test in which is asked to design and to develop some C language programs in order to solve the problems assigned. The written test can be avoided by passing the two exoneration exams.