Computer Programming with Laboratory (2010/2011)

Course code
Ugo Solitro
Academic sector
Language of instruction
Teaching is organised as follows:
Activity Credits Period Academic staff Timetable
Teoria 8 II semestre Ugo Solitro
Laboratorio 4 II semestre Ugo Solitro

Lesson timetable

II semestre
Activity Day Time Type Place Note
Teoria Tuesday 1:30 PM - 4:30 PM lesson Lecture Hall E  
Teoria Wednesday 3:30 PM - 5:30 PM lesson Lecture Hall E  
Teoria Friday 1:30 PM - 3:30 PM laboratorio Laboratory Delta  
Laboratorio Monday 10:30 AM - 1:30 PM laboratorio Laboratory Delta  

Learning outcomes

Introduction to informatics.
Study the programming principles and their application to the solution of problems, mathematical ones in particular, by means of a particular programming language.
The fundamentals of programming.
The techniques for the analysis and solution of the problems; more we introduce the methods for the evaluation of correctness and efficiency of the algorithms.
In the laboratory we learn how to develop project of small or medium size in a specific programming language.


- Introduction

Basics of Computer Science.

Part I - problems, algorithms and programs.

- Fundamentals: problem, specifics, algorithm; abstract machine, compiler and interpreter; programming languages.
- Introduction to the programming language.
- Elementary programming: basic instructions and development of simple programs.
- Data types. The general concept of data type: characterization and data representation. Variables, expressions and assignment. Abstract Data Types.
- Primitive data types: characterization, usage and related problems.
- Program structure. Fundamental instructions.
- Sub-programs: structure, parameters and visibility.
- Structured data types. Arrays, pointers, strings and other data structures.
- Basics of objects.
- Dynamic data structures.
- Introduction to graphs and other subjects.

Part II - Analysis of Algorithms

- Correctness: termination, logic properties; methods for the correctness verification.
- Introduction to the complexity. Performance of algorithms. Evaluation of efficiency. Computational costs.
- Asymptotic estimation of the complexity in time and space. The worst and medium case.
- Amortized analysis.
- Static sequences: implementation and algorithms.
- Matrices: implementation, operations and algorithms.
- Dynamic sequences: abstract definition and implementation; basic operations.
- Trees. Abstract definition and implementation. Basic operation. Binary research trees.
- Introduction to graphs.

Basics of Object Oriented Programming


In the laboratory we familiarize with the programming language developing projects based on the ideas presented in the lessons.
We study the fundamental elements of the language and we deal with the problems that arise in the development of the solution; in particular we acquire skill in editing, compiling, debugging and basic project management.

Assessment methods and criteria

The final exam is unique and consists in two parts:
- a written exam concerning the topics of the course and the laboratory projects.
- an oral part (the admission to this part is allowed only after passing the first one): discussion on the examination paper, the lab activity and in general on the topics of the course.
The final written exam can be replaced by verification the tests that take place during the course.

Reference books
Activity Author Title Publisher Year ISBN Note
Teoria Bertossi, Alan e Montresor, Alberto Algoritmi e strutture di dati Città Studi Edizioni, De Agostini Scuola 2010 9788825173567
Laboratorio Bertacca M. e Guidi A. Programmare in Java McGraw-Hill 2007 978-88-386-6400-7