Computer Programming with Laboratory (2012/2013)
Scientific Disciplinary Sector (SSD)
INF/01 - INFORMATICS
The teaching is organized as follows:
II semestre, I semestre
II semestre, I semestre
Introduction to informatics.
Study the principles of programming
Basic techniques for the analysis and solution of the problems
Introduction to the methods for the evaluation of correctness and efficiency of algorithms.
Knowledge of a programming language
Developing of projects of small or medium size.
Application of the techniques of algorithms evaluation.
Introduction to Computing Science.
Part I - problems, algorithms and programs.
- Basics: 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 and Vectors: 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.
The styles of programming.
Imperative Programming and 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.
||Bertossi, Alan e Montresor, Alberto
||Algoritmi e strutture di dati
||Città Studi Edizioni, De Agostini Scuola
||Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
||Introduction to Algorithms
||Testo di riferimento e consultazione
||Savitch, Walter e Carrano, Frank M.
||Programmazione con Java
||Pearson Prentice Hall Italia
The exam is unique and consists in two parts:
- a first written test concerning the topics of the course and the laboratory activity.
- the final part (the admission is subject to the approval of the first one) consisting in general questions, exercises and a discussion on the examination paper, the lab activity.
The final written exam can be replaced by tests that take place during the teaching periods.