Computer programming

Degree course: 
Corso di First cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2020/2021
Year: 
1
Academic year in which the course will be held: 
2020/2021
Course type: 
Basic compulsory subjects
Seat of the course: 
Varese - Università degli Studi dell'Insubria
Credits: 
12
Period: 
First Semester
Standard lectures hours: 
104
Requirements: 

No specific computer science/mathematical knowledge is required beyond those provided by any high school.

The verification method consists of a written test.
The purpose of this test is to verify the learning and understanding of the elements characterizing the programming language being studied and the ability of the student to apply these elements to the resolution of simple problems. A written test (time left for solving it approx. 120 minutes) consists of: Exercises of a practical nature, whose purpose is to verify the ability of the student to represent the methods of solving simple problems through the use of the programming language used.
The exercises are 6 or 7.
Questions of a theoretical nature, whose purpose is to verify the communication skills developed by the student, in particular the acquisition of the technical terminology necessary for the comprehension and communication of the methodologies and models related to the programming language studied.
The questions are 2 or 3.
The vote of the written test is expressed in thirtieths. The test is passed if the grade is greater than or equal to 18/30.

Assessment: 
Voto Finale

This course provides an introduction to computer programming using the Java language. The primary objective is to provide students with the knowledge necessary to understand and use Java language and to apply language to solve problems. The course supports the theoretical teaching of Java language and its structures, exercises and laboratories. At the end of this course the student:
1. knows the main elements that characterize a programming language (syntax, semantics, implementation mechanisms);
2. knows the control structures, the basic data structures and the main abstractions provided by the Java language and in general by object languages;
3. applies the language for solving simple problems exploiting the potential of an object-oriented programming language.
At the end of the course the student has the necessary knowledge to individually deal with the study of a programming language and to understand the problems related to the development and application of programming languages.
At the end of the course the student is able to apply the programming language to the resolution of simple problems identifying the abstractions most suitable for the formalization of the problem in an object language.
At the end of the course the student is able to identify the conceptual scheme of solving a problem and to use the programming language for organizing its solution.
At the end of the course the student is able to communicate in full and correct way the characteristics of a programming language and the structure of the applications built with such a language.

The acquisition of the different knowledge and skills expected will develop parallel throughout the teaching, in which the following topics will be dealt with:
˗ Introduction to programming languages: abstractions, algorithms, syntax, semantics and development tools (lessons 3 hours).
˗ Introduction to the Java language. Basic concepts, compilation, execution, application structure (lessons 3 hours).
˗ Primitive types and expressions (lessons 8 hours; exercises 1 hours; laboratory 2 hours).
˗ Control structures (lessons 8 hours; exercises 1 hours; laboratory 2 hours).
˗ Arrays (lessons 4 hours; exercises 1 hours; laboratory 2 hours).
Hierarchy of reference types, cast and polymorphism (lessons 6 hours; exercises 1 hours; laboratory hours 4).
Implementation of classes (lessons 8 hours; exercises 1 hours; laboratory hours 4).
Implementation of inheritance (lessons 8 hours; exercises 1 hours; laboratory 2 hours).
Interfaces (lessons 2 hours; exercises 1 hours; laboratory 2 hours).
Variables, scopes and shading (lessons 2 hours; exercises 1 hours; laboratory 2 hours).
Early- and late-binding in Java (lessons 4 hours; exercises 1 hours; laboratory 2 hours).
Memory management: stack and heap. Recursive methods (lessons 4 hours; exercises 1 hours; laboratory 2 hours).
Exceptions (lessons 6 hours; laboratory 2 hours).
Implementation of generic types (lessons 4 hours).

Textbook: M. Ferrari e G. Pighizzini. Dai Fondamenti agli oggetti, corso di programmazione Java. Fourth edition, Pearson Addison-Wesley, 2015 (in italian).
Additional material available on the e-learning site: Exercises with solutions. Solved exam tests. Examples of applications.

Lectures composed of 80 hours of theoretical lessons: fundamental elements of a programming language; control structures, abstractions, compilation and execution of the Java language.
Laboratory composed of 24 hours: learning of development tools; guided development of applications

Meeting with the professor by appointment via email to name.surname@uninsubria.it. The professor replies only to signed emails coming from the domain studenti.uninsubria.it.