Computer programming

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

None

Final Examination: 
Orale
Assessment: 
Voto Finale

Course Objectives and Expected Outcomes

The course provides an introduction to computer programming using the Java programming language. The main purpose of the course is to provide to students the necessary knowledge for understanding and deploying the Java programming language and for applying it in problem solving activities. The course is therefore composed of modules teaching the Java language and its structures, along with exercises and laboratories. At the end of the course, the student:
- knows about the main elements that compose a programming language (syntax, semantics, implementation mechanisms)
- knows control structures, basic data structures and main abstractions provided by Java and - more broadly - by object oriented programming languages.
- applies Java for solving simple problems, deploying what offered by an object oriented programming language.

Knowledge and understanding: at the end of the course, the student has the necessary knowledge for studying on her/his own a programming language and for understanding the issues concerning developing and applying programming languages.

Applying knowledge and understanding: at the end of the course, the student is able to solve on her/his own simple problem using the programming language by choosing the most suitable abstractions for the formalization of the problem in an object oriented language.

Judgement: at the end of the course, the student is able to choose the conceptual framework suitable for the resolution of a problem and to deploy the programming language in order to construct its solution.

Communication skills: at the end of the course, the student is able to properly communicate with the right terminology the features of a programming language, along with the structure of the applications built with it.

Evaluation procedure
The evaluation procedure is formed by a written examination and an oral examination. During the course, there are two partial written examinations, that - if positively evaluated - dispense from the written evaluation. The objective of the written examination (and the partial examinations as well) is to assess the learning and comprehension of the elements characterizing the Java programming language and the student skill in applying such language towards the resolution of simple problems. Written examinations ( and the partial examinations as well) consist of:
- exercises for assessing the comprehension and knowledge of basic concepts of Java programming language (expressions, control structures, data structures and abstractions),
- exercises for assessing the skills in defining the solution of a problem and for structuring a solution using Java.
Aim of the oral examination is to assess the communication skills learned by the student, in particular her/his acquisition of the necessary technical vocabulary for the comprehension and communication of a programming language and the applications written with it. The scores of both examinations is expressed in thirtieths. The final score is the arithmetic mean of both the written and oral examinations’ scores.

- introduction to programming languages: abstractions, algorithms, syntax, semantics and development tools. Lessons: 3 hours, exercises: 0 hours, laboratory: 0 hours.
- introduction to the Java programming language. Fundamental concepts, compilation, execution, application structure. Lessons: 3 hours; exercises: 0 hours; laboratory: 2 hours.
- primitive data types and expressions. Lessons: 8 hours; exercises: 2 hours; laboratory 0 hours.
- control structures. Lessons: 8 hours; exercises: 2 hours; laboratory: 0 hours.
- array. Lessons: 4 hours; exercises: 2 hours; laboratory: 2 hours.
- Hierarchy of reference types, cast and polymorphism. Lessons: 6 hours; exercises: 2 hours; laboratory: 2 hours.
- implementation of classes. Lessons: 8 hours; exercises: 3 hours; laboratory: 3 hours.
- implementation of inheritance. Lessons: 8 hours; exercises: 3 hours; laboratory: 2 hours.
- interfaces. Lessons: 2 hours; exercises: 1 hour; laboratory: 2 hours.
- variables, scopes and shadowing: Lessons: 2 hours; exercises: 1 hour; laboratory: 0 hours.
- early and late binding in Java. Lessons: 4 hours; exercises: 2 hours; laboratory: 0 hours.
- memory management: stack and heap. Recursive methods. Lessons: 4 hours; exercises: 2 hours; laboratory: 2 hours.
- Exceptions. Lessons: 6 hours; exercises: 2 hours; laboratory: 2 hours.
- implementation of generic types. Lessons: 4 hours; exercises: 2 hours; laboratory: 0 hours.

textbook:
M. Ferrari, G. Pighizzini. Dai Fondamenti agli Oggetti, corso di programmazione Java. Third edition, Pearson Addison-Wesley, 2008.
suggested text (reference manual of Java):
K. Arnold, J. Gosling, D. Holmes. Il Linguaggio Java. Manuale ufficiale. Fourth edition, Addison Wesley, 2005.

Additional material:
Exercises with solution. Examination tests with solutions. Application examples.

Professors