Computer programming

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2017/2018
Year: 
1
Academic year in which the course will be held: 
2017/2018
Course type: 
Basic compulsory subjects
Language: 
Italian
Credits: 
12
Period: 
First Semester
Standard lectures hours: 
104
Detail of lecture’s hours: 
Lesson (80 hours), Exercise (24 hours)
Requirements: 

no prerequisites

Final Examination: 
Orale

Final written exam.
During the course, two partial written examinations are given.
Being successful at both of such partial examinations, one can be dispensed from the final written exam.
The exam yields a final vote - expressed in 30 points -
The exam is successfully passed with at least 18 points.
depending on the knowledge and the comprehension capabilities of the student about the topics of the syllabus. The written exam is formed by 6/7 exercises, 2/3 related to theoretical topics. The

Assessment: 
Voto Finale

The course provides an introduction to programming through the Java programming language. The primary goal is to provide students with the necessary knowledge to understand and to develop programs in the Java programming language. The course is thus formed by lessons that illustrate the fundamentals of the Java language, as well as laboratory lessons and explanations of programming exercises. At the end of the course, the student:

knows the main elements that form a programming language (syntax, semantics, implementation mechanisms);
knows the control structures, the basic data structures and the main abstractions provided by the Java programming language and by object-oriented languages;
uses the Java language for the resolution of simple problems, deploying the capabilities provided by an object-oriented language;

Knowledge and understanding capabilities
at the end of the course the student has the necessary capabilities to autonomously learn a programming language e to understand the problems inherent to the development of new software.

Applying knowledge and understanding.
At the end of the course the student can deploy the apprehended programming language in order to solve simple problems, proposing the most suitable abstractions for the formalization of the problem in an object-oriented language.

Communication capabilities
At the end of the course the student can properly communicate with the right terminology the features of a programming language and the structure of the implemented applications.

Introduction to programming languages: abstractions, algorithms, syntax, semantics, development tools.
Introduction to the Java programming language. Basic concepts, compilation, execution, structure of applications.
Primitive types and expressions.
Control structures.
Arrays.
Hierarchy of reference type. Cast and polymorphism.
Implementation of classes.
Implementation of hereditariety.
Variables, scope and shadowing.
Early- and late- binding in Java.
memory management: stack and heap. Recursive methods.
Exceptions.
Implementations of generic types.

M.Ferrari e G. Pighizzini. Dai Fondamenti agli oggetti, corso di programmazione Java. Third edition, Pearson Addison-Wesley, 2008.
Additional material (exercises with solutions, source code) is available on the e-learning site.

Frontal lectures, 72 hrs:
fundamental topics about programming languages; control structures, abstractions, compilation and execution of Java applications.

Exercises lectures, 10 hrs:
exercises on the fundamental topics of programming languages

Laboratory, 24 hrs:
learning of the development tools, guided development of applications

meetings with students upon requests by students themselves

Professors

ALBERTINI DAVIDE ALBERTO
CALEFATI ALESSANDRO