Skip to main content
CODE 48382
ACADEMIC YEAR 2024/2025
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR INF/01
LANGUAGE Italian
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester
TEACHING MATERIALS AULAWEB

OVERVIEW

This course will introduce:


the concepts of algorithm, data type (values + operations), implementation, techniques for evaluating the complexity of an implementation;

the basic principles of object oriented programming;

the Java and Python languages with practical exercises.

AIMS AND CONTENT

LEARNING OUTCOMES

Introduction to: data types; algorithms, data structures and complexity evaluation; object-oriented programming with the Java language as an example; implementation of data types in Java.

AIMS AND LEARNING OUTCOMES

A data type (consisting of values and operations acting on them) is the ideal counterpart of a software module. The process leading from a data type to a software module includes the definition of data structures (to store data in memory) and algorithms (to perform the operations).
An algorithm is the stepwise description of a procedure producing an output from an input. The same input-to-output transformation can be achieved through different algorithms.
In order to choose among the possible alternatives, it is recommented to evaluate their computational complexity (memory and execution time) with suitable techniques. The final step consists of writing code in a programming language.

"Programmazione 2" assumes that the student already knows basic programming, and will give to him/her the instruments to perform all the passages listed above, starting from a data type and arriving at implementing it in one of the two selected languages (Java and Python). In particular, Java is an object oriented programming language, structured with classes, and especially suitable to develop software modules that are classes and implement a data type. Python is a programming language characterized by a very light syntax, similar to natural English language, very versatile and suitable for rapid prototyping.

The laboratory activities will cover almost half of the teaching hours, and will be fundamental to learn how to program in the two selected languages and to see the content of the lessons at work. Even the apparently "theoretical" parts are aimed at giving the useful conceptual tools for developing quality software.

After attending "Programmazione 2", the student will

  • be able to evaluate the complexity of simple data structures and algorithms.
  • know some classic algorithms and some classic data types and will be able to implement them.
  • know the object oriented programming paradigm and the main parts of the Java and Python programming languages.
  • be able to write structured programs in Java and simple programs in Python.

PREREQUISITES

Knowledge of the basic concepts of an imperative programming language: instruction, variable, cycle, function, argument, result, typing of variables.

Knowledge of the basic concepts of mathematics and logics: operation, argument, result, domain, codomain, logical operators.

TEACHING METHODS

Coordinated lessons in classroom and in laboratory. About half of the teaching time will be in laboratory.
Assignments (in Java and in Python) will be part of the exam (see exam and assessment methods).

SYLLABUS/CONTENT

Concepts of data type, algorithm, implementation.
Introduction to space and time complexity, and evaluation techniques (for iterative and recursive algorithms). 
Some classic data types: stack, queue, dictionary. 
Some algorithms for classic problems: sorting and/or operations on graphs.
Object-oriented programming paradigm and Java language: Classes and objects, equality and copy of objects, constructors, clientship, inheritance, overriding, exceptions.
The Python language: Interactive environment, dynamic typing, container types (list, tuple, dictionary) and operations, functions, classes, inheritance, exceptions.
Practical exercises in the two languages: Java and Python.

RECOMMENDED READING/BIBLIOGRAPHY

Course notes available on aulaweb (in Italian).  
On-line manual and tutorials (in English). 

Books in English: 
M.T.Goodrich, R.Tamassia, M.H.Goldwasser, Data structures and algorithms in Java, John Wiley & Sons. (2014)
C.Horstmann, R.D.Necaise, Python for everyone, John Wiley & Sons.(2018)

TEACHERS AND EXAM BOARD

Exam Board

PAOLA MAGILLO (President)

DAVIDE ANCONA

ELENA ZUCCA SCHILLANI (President Substitute)

LESSONS

LESSONS START

The class will start according to the academic calendar.

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

The exam consists of:

  1. practical assignments to be developed in laboratory during the teaching period, and
  2. an oral test.

The outcome of the practical assignments remains valid for the entire academic year, from January to September (included).

 

ASSESSMENT METHODS

During the semester, two laboratory assignments will be given, one in Java and one in Python.
Such assignments are to be developed in groups of two students and will require to deliver code and documentation.
The correctness and the quality of both code and documentation will be evaluated, and will produce a score in a level scale like sufficient-sasisfactory-good-excellent.
The deadline for such assigments is the end of the semester. A brief and informal discussion will follow, in which the two group members will be asked to illustrate the main points of their work.

The oral exam will ask questions about the teaching program, and may involve writing examples in code (in Java or Pthon) or pseudocode. The student will be required to show understanding of the concepts and ability to use the techniques seen in the lessons, and to master the syntax of the two programming languages Java and Python.

The final score will take into account the oral test and the outcome of the laboratory assignments.

Exam schedule

Data appello Orario Luogo Degree type Note
08/01/2025 09:00 GENOVA Orale
05/02/2025 09:00 GENOVA Orale
19/09/2025 09:00 GENOVA Esame su appuntamento

FURTHER INFORMATION

It is strongly recommended to have already attended the course Programmazione 1.

Students who have valid certification of physical or learning disabilities on file with the University and who wish to discuss possible accommodations or other circumstances regarding lectures, coursework and exams, should speak both with the instructor and with Professor Sergio Di Domizio (sergio.didomizio@unige.it), the Department’s disability liaison.
 

Agenda 2030 - Sustainable Development Goals

Agenda 2030 - Sustainable Development Goals
Quality education
Quality education
Gender equality
Gender equality