FUNDAMENTALS OF PROGRAMMING B
cod. 1000749

Academic year 2024/25
2° year of course - Second semester
Professor
Vincenzo ARCERI
Academic discipline
Informatica (INF/01)
Field
Attività formative affini o integrative
Type of training activity
Related/supplementary
72 hours
of face-to-face activities
9 credits
hub:
course unit
in - - -

Learning objectives

The course aims to provide the student with the basic knowledge for the design and implementation of "object-oriented" programs, as well as in-depth knowledge about the programming tools provided by C++ and Java for "object-oriented" programming.
 
The course also aims to provide students with the ability to apply the acquired problem analysis techniques and knowledge about programming tools to carry out concrete executable C++ and Java programs.

Prerequisites

The concepts and basic techniques of imperative programming as provided by Foundamentals of Programming A.

Course unit content

The course introduces the fundamentals of the "object-oriented" and modular programming paradigms, using as the main reference the C++ language, but also taking into account the Java language in the final part of the course.

The course also presents some advanced constructs and mechanisms of C++ and Java, such as function and operator overloading and exception handling, as well as some notions and tools that are not strictly related to the "object-oriented" programming paradigm, but which are nevertheless of great importance, such as the notions of abstract data type and the software development cycle.

Full programme

Class and object declaration. Accessing member functions and data of a class. Class constructors. Abstract data types (ADT).
Function and operator overloading.
The 'string' class.
Dynamic memory allocation. A sample class: 'int_vett'. The assignment operator. The copy constructor. Class destructors. Object life-time.

Exception handling: motivations. Constructs for exception handling in C++.
Parametric classes ('template'): declaration, instantiation. A sample class: 'vett<T>' - Parametric functions.
Inheritance. 'public' vs 'private' derivation. Multiple inheritance (hints).

Introduction to Java. Features and components. Interpretation vs compilation. The Java Virtual Machine. Structure of a Java program.
Simple primitive types. Basic I/O. Control structures.
Structured types: arrays. References and objects. Garbage collection. Strings. Static methods. Parameter passing.
The 'class' construct. Declaration and instantiation. Example: class 'Rational'.
Inheritance. References 'this' and 'super'. Polymorphism. Substitution principle and "down-casting". Classe hierarchy (class java.lang.Object). "Wrapper" types. Interfaces and implementations. Abstract classes. Generics. Interfaces and inheritance.

Bibliography

- L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
- C.S. Horstmann , Concetti di informatica e fondamenti di Java, Apogeo, 2010.
- M.Cadoli, M.Lenzerini, P.Naggar, A.Schaerf. Fondamenti della progettazione di programmi. Principi, tecniche e loro applicazioni in C++, CittaStudiEdizioni di UTET Libreria, 1997.
- C++ and Java programs shown in class and in the laboratory, available on Elly

Teaching methods

Teaching takes place mainly through lectures and computer-based exercises, either assisted or carried out independently by the students.
The lectures provide, among other, the presentation of a number of practical examples, along with the related solutions written in C++ and Java, which will be made available on the Elly page of the course

Assessment methods and criteria

The final examination of the Fundamentals of Programming B course consists of a written theory test and a written programming test.

The theory test consists in answering on paper ten closed questions on the most basic and general topics treated throughout the course. This test serves as a barrier for the second programming test. To pass the theory test and access the programming test, 70% of the questions are required to be answered correctly. If the student does not correctly answer at least 70% of the questions, the exam is considered not passed and will not be able to access the programming test.

The programming test consists in the solution on paper of some programming exercises.

Fundamentals of Programming A+B: For students of the Degree in Computer Science, this course exam is integrated with that of the course "Fundamentals of Programming A". A mark out of thirty is assigned to each of the exams (part A and part B). The exam of Fundamentals of Programming A + B is considered passed if the arithmetic average between the grade obtained in Fundamentals of Programming A and that obtained in Fundamentals of Programming B is greater than or equal to 18 and each of the two grades is greater than or equal to 16.

Other information

The course includes its own Web page, managed directly by the teacher, based on the e-learning platform of the University of Parma Elly

2030 agenda goals for sustainable development

- - -

Contacts

Toll-free number

800 904 084

Student registry office

E. segreteria.scienze@unipr.it
T. +39 0521 905116

Quality assurance office

Education manager
dott.ssa Giulia Bonamartini

T. +39 0521 906968
E. servizio smfi.didattica@unipr.it
E. del manager giulia.bonamartini@unipr.it

President of the degree course

Prof. Luca Lorenzi
E. luca.lorenzi@unipr.it

Faculty advisor

Prof. Luca Lorenzi
E. luca.lorenzi@unipr.it

Career guidance delegate

Prof. Francesco Morandin
E. francesco.morandin@unipr.it

Tutor Professors

Prof. Emilio Acerbi
E. emilio.acerbi@unipr.it

Prof. Marino Belloni
E. marino.belloni@unipr.it

Prof.ssa Maria Groppi
E. maria.groppi@unipr.it

Prof.ssa Chiara Guardasoni
E. chiara.guardasoni@unipr.it

Prof. Luca Lorenzi
E. luca.lorenzi@unipr.it

Prof. Costantino Medori
E. costantino.medori@unipr.it

Prof. Adriano Tomassini
E. adriano.tomassini@unipr.it

Erasmus delegates

Prof.ssa Fiorenza Morini
E. fiorenza.morini@unipr.it

Quality assurance manager

Prof.ssa Maria Groppi
E. maria.groppi@unipr.it

Tutor students

Dott. Matteo Mezzadri
E. matteo.mezzadri@studenti.unipr.it