Mathematics and Foundations of Programming
A.Y. 2026/2027
Learning objectives
The cluster aims to provide students with foundational mathematical, methodological, and operational knowledge required for problem analysis and solution through mathematical modeling and subsequent algorithmic implementation.
The educational pathway introduces the formal language and core concepts of mathematics, which are essential for the description of data, relationships, and problems, alongside the fundamentals of programming and algorithms. In particular, the cluster provides initial software development skills, with reference to the basic mechanisms of computation and to algorithmic reasoning applied to mathematically formalized problems.
The cluster is designed to also support students with no prior background, guiding them progressively from problem formalization to the design of algorithmic solutions and their implementation. The educational objective is to build a solid and coherent foundation, which is preparatory to subsequent clusters, where the acquired mathematical and programming skills are reused and further developed in more complex application contexts.
The cluster is organized into the modules Programming and Algorithms I, Mathematics I, and Mathematics II, which are designed in an integrated manner. The modules jointly contribute to the achievement of the intended learning outcomes by combining mathematical foundations in both continuous and discrete domains with programming and algorithmic fundamentals, fostering skills in problem formalization, algorithm design, and solution implementation.
The educational pathway introduces the formal language and core concepts of mathematics, which are essential for the description of data, relationships, and problems, alongside the fundamentals of programming and algorithms. In particular, the cluster provides initial software development skills, with reference to the basic mechanisms of computation and to algorithmic reasoning applied to mathematically formalized problems.
The cluster is designed to also support students with no prior background, guiding them progressively from problem formalization to the design of algorithmic solutions and their implementation. The educational objective is to build a solid and coherent foundation, which is preparatory to subsequent clusters, where the acquired mathematical and programming skills are reused and further developed in more complex application contexts.
The cluster is organized into the modules Programming and Algorithms I, Mathematics I, and Mathematics II, which are designed in an integrated manner. The modules jointly contribute to the achievement of the intended learning outcomes by combining mathematical foundations in both continuous and discrete domains with programming and algorithmic fundamentals, fostering skills in problem formalization, algorithm design, and solution implementation.
Expected learning outcomes
Knowledge and understanding
At the end of the cluster, the student acquires foundational knowledge of discrete mathematics and logic, as well as of the fundamentals of programming and algorithms, which is necessary for the formalization and rigorous description of problems, data, and relationships, using appropriate formal language and notation.
Applying knowledge and understanding
At the end of the cluster, the student is able to:
· analyze a problem and decompose it into sub problems, defining a solution through mathematical modeling and algorithmic design;
· translate a solution into an algorithm, justifying the adopted design choices;
· implement algorithmic solutions in an imperative programming language, using control structures, functions, and basic data structures;
· verify and improve the correctness of implemented solutions through elementary testing, debugging, and essential documentation.
Making judgements
The student develops the ability to:
· qualitatively assess the correctness of proposed solutions;
· estimate, in intuitive terms, the computational complexity of an algorithm (number of operations) and its scalability as the size of the data increases;
· compare alternative solutions with respect to simplicity, efficiency, and clarity of implementation.
Communication skills
At the end of the cluster, the student is able to communicate clearly and in a formally correct manner, also in written form, the addressed problem, the adopted model, the proposed algorithmic solution, and the obtained results, using language appropriate to the scientific and technical context.
Learning skills
The student acquires the ability to:
· independently identify, select, and use educational and in depth resources (textbooks, lecture notes, tutorials, technical documentation) to fill knowledge gaps and deepen mathematical and programming concepts;
· address problems and exercises not previously covered by formulating solution hypotheses, decomposing the problem into elementary components, and verifying the correctness and efficiency of the solutions;
· independently adopt development tools and practices (e.g., development environments, version control, and testing) to improve code quality, traceability, and maintainability.
At the end of the cluster, the student acquires foundational knowledge of discrete mathematics and logic, as well as of the fundamentals of programming and algorithms, which is necessary for the formalization and rigorous description of problems, data, and relationships, using appropriate formal language and notation.
Applying knowledge and understanding
At the end of the cluster, the student is able to:
· analyze a problem and decompose it into sub problems, defining a solution through mathematical modeling and algorithmic design;
· translate a solution into an algorithm, justifying the adopted design choices;
· implement algorithmic solutions in an imperative programming language, using control structures, functions, and basic data structures;
· verify and improve the correctness of implemented solutions through elementary testing, debugging, and essential documentation.
Making judgements
The student develops the ability to:
· qualitatively assess the correctness of proposed solutions;
· estimate, in intuitive terms, the computational complexity of an algorithm (number of operations) and its scalability as the size of the data increases;
· compare alternative solutions with respect to simplicity, efficiency, and clarity of implementation.
Communication skills
At the end of the cluster, the student is able to communicate clearly and in a formally correct manner, also in written form, the addressed problem, the adopted model, the proposed algorithmic solution, and the obtained results, using language appropriate to the scientific and technical context.
Learning skills
The student acquires the ability to:
· independently identify, select, and use educational and in depth resources (textbooks, lecture notes, tutorials, technical documentation) to fill knowledge gaps and deepen mathematical and programming concepts;
· address problems and exercises not previously covered by formulating solution hypotheses, decomposing the problem into elementary components, and verifying the correctness and efficiency of the solutions;
· independently adopt development tools and practices (e.g., development environments, version control, and testing) to improve code quality, traceability, and maintainability.
Lesson period: First four month period
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course can be attended as a single course.
Course syllabus and organization
Single session
Responsible
Lesson period
First four month period
Prerequisites for admission
The cluster focuses on fundamental concepts of mathematics and programming. It provides all the necessary knowledge to solve mathematical problems relevant to the degree program and to model, design, and develop simple software solutions. Therefore, no specific prerequisites are required.
Assessment methods and Criteria
The examination will be conducted in person.
The assessment will consist of both open-ended and closed-ended questions, designed to evaluate, on the one hand, the student's ability to explain, discuss, and interpret the course contents and, on the other hand, their ability to combine acquired knowledge in novel ways to generate new insights and perspectives.
In addition, to assess the student's capacity to analyze problem situations and apply appropriate methods and procedures to specific cases, the examination will include practical exercises and problem-solving tasks requiring the development of concrete solutions.
The assessment will consist of both open-ended and closed-ended questions, designed to evaluate, on the one hand, the student's ability to explain, discuss, and interpret the course contents and, on the other hand, their ability to combine acquired knowledge in novel ways to generate new insights and perspectives.
In addition, to assess the student's capacity to analyze problem situations and apply appropriate methods and procedures to specific cases, the examination will include practical exercises and problem-solving tasks requiring the development of concrete solutions.
Mathematics I
Course syllabus
Basic set operations: union, intersection, and set difference. Relations and their fundamental properties: transitivity, reflexivity, and symmetry. Equivalence relations and order relations.
Fundamental number sets: natural numbers, integers, rational numbers, and complex numbers.
Algebraic and transcendental equations and inequalities. Elementary functions.
Principle of mathematical induction.
Vectors and vector operations. Matrices: matrix operations, relationship between matrices and linear systems, Gaussian elimination method.
Basic notions of geometry: planes, lines, parallelism, and perpendicularity.
Fundamental number sets: natural numbers, integers, rational numbers, and complex numbers.
Algebraic and transcendental equations and inequalities. Elementary functions.
Principle of mathematical induction.
Vectors and vector operations. Matrices: matrix operations, relationship between matrices and linear systems, Gaussian elimination method.
Basic notions of geometry: planes, lines, parallelism, and perpendicularity.
Teaching methods
The module comprises 40 hours, divided between teaching activities (DE) and interactive learning activities (DI), as follows:
18 hours of teaching activities (DE), including 10 hours delivered asynchronously and 8 hours delivered synchronously (recorded and subsequently made available to students);
22 hours of asynchronous interactive learning activities (DI).
18 hours of teaching activities (DE), including 10 hours delivered asynchronously and 8 hours delivered synchronously (recorded and subsequently made available to students);
22 hours of asynchronous interactive learning activities (DI).
Teaching Resources
A collection of exercises and problems (some fully worked out and others provided with solutions) covering the fundamental topics of both modules.
For further theoretical study and additional exercises, the following textbook is recommended:
Sbordone, C., Marcellini, P. Elementi di Analisi Matematica Uno. Liguori Editore. ISBN: 9788820733834.
For further theoretical study and additional exercises, the following textbook is recommended:
Sbordone, C., Marcellini, P. Elementi di Analisi Matematica Uno. Liguori Editore. ISBN: 9788820733834.
Mathematics II
Course syllabus
- Sequences of real numbers.
- Functions of a real variable.
- Limits of functions and continuity.
- Differential calculus and differentiability.
- Function analysis (study of functions).
- Integral calculus.
- Indefinite and definite integrals.
- Computation of areas and volumes.
- Improper integrals.
- Functions of a real variable.
- Limits of functions and continuity.
- Differential calculus and differentiability.
- Function analysis (study of functions).
- Integral calculus.
- Indefinite and definite integrals.
- Computation of areas and volumes.
- Improper integrals.
Teaching methods
The module comprises 40 hours, divided between teaching activities (DE) and interactive learning activities (DI), as follows:
18 hours of teaching activities (DE), including 10 hours delivered asynchronously and 8 hours delivered synchronously (recorded and subsequently made available to students);
22 hours of asynchronous interactive learning activities (DI).
18 hours of teaching activities (DE), including 10 hours delivered asynchronously and 8 hours delivered synchronously (recorded and subsequently made available to students);
22 hours of asynchronous interactive learning activities (DI).
Teaching Resources
A collection of exercises and problems (some fully worked out and others provided with solutions) covering the fundamental topics of both modules.
For further theoretical study and additional exercises, the following textbook is recommended:
Sbordone, C., Marcellini, P. Elementi di Analisi Matematica Uno. Liguori Editore. ISBN: 9788820733834.
For further theoretical study and additional exercises, the following textbook is recommended:
Sbordone, C., Marcellini, P. Elementi di Analisi Matematica Uno. Liguori Editore. ISBN: 9788820733834.
Programming and Algorithms I
Course syllabus
Introduction to Programming
- Formal languages, automata, and the Turing Machine as theoretical foundations of programming.
- Computer architecture and information representation.
- The concept of algorithms and the main formal notations.
- From unstructured programming to structured programming.
Fundamentals of the C Programming Language
- Structure of a C program and the compilation process.
- Data types, operators, expressions, and macros.
- Control structures, loops, and jump statements.
- Arrays, strings, and extensions to the type system.
Functions, Pointers, and Data Organization
- Functions, variable scope, and code modularization.
- Parameter passing and function call/return mechanisms.
- Pointers, arrays, and memory management.
- User-defined data structures and advanced pointer usage.
- File handling and input/output operations.
Dynamic Memory and Programming Paradigms
- Dynamic memory allocation and recursion.
- Function pointers and language qualifiers.
- Introduction to imperative, functional, and logic programming paradigms.
Abstraction and Software Design
- Abstraction and software system modeling.
- Abstract Data Types (ADTs) and code organization.
- Software testing, development, and quality assurance.
- Complexity analysis and asymptotic notation.
Algorithms and Data Structures
- Linear and doubly linked lists.
- Stacks, queues, trees, and graphs.
- Searching and sorting algorithms.
- Hashing techniques and data structures for efficient searching.
- Formal languages, automata, and the Turing Machine as theoretical foundations of programming.
- Computer architecture and information representation.
- The concept of algorithms and the main formal notations.
- From unstructured programming to structured programming.
Fundamentals of the C Programming Language
- Structure of a C program and the compilation process.
- Data types, operators, expressions, and macros.
- Control structures, loops, and jump statements.
- Arrays, strings, and extensions to the type system.
Functions, Pointers, and Data Organization
- Functions, variable scope, and code modularization.
- Parameter passing and function call/return mechanisms.
- Pointers, arrays, and memory management.
- User-defined data structures and advanced pointer usage.
- File handling and input/output operations.
Dynamic Memory and Programming Paradigms
- Dynamic memory allocation and recursion.
- Function pointers and language qualifiers.
- Introduction to imperative, functional, and logic programming paradigms.
Abstraction and Software Design
- Abstraction and software system modeling.
- Abstract Data Types (ADTs) and code organization.
- Software testing, development, and quality assurance.
- Complexity analysis and asymptotic notation.
Algorithms and Data Structures
- Linear and doubly linked lists.
- Stacks, queues, trees, and graphs.
- Searching and sorting algorithms.
- Hashing techniques and data structures for efficient searching.
Teaching methods
The module comprises 60 hours, divided between teaching activities (DE) and interactive learning activities (DI), as follows:
27 hours of teaching activities (DE), including 15 hours delivered asynchronously and 12 hours delivered synchronously (recorded and subsequently made available to students);
33 hours of asynchronous interactive learning activities (DI).
27 hours of teaching activities (DE), including 15 hours delivered asynchronously and 12 hours delivered synchronously (recorded and subsequently made available to students);
33 hours of asynchronous interactive learning activities (DI).
Teaching Resources
Lecture notes and presentation slides prepared by the instructors, available on the course platform
Modules or teaching units
Mathematics I
MATH-03/A - Mathematical Analysis - University credits: 4
MATH-05/A - Numerical Analysis - University credits: 2
MATH-05/A - Numerical Analysis - University credits: 2
Asynchronous lectures: 10 hours
Synchronous lectures: 8 hours
Interactive learning: 22 hours
Synchronous lectures: 8 hours
Interactive learning: 22 hours
Mathematics II
MATH-03/A - Mathematical Analysis - University credits: 2
MATH-05/A - Numerical Analysis - University credits: 4
MATH-05/A - Numerical Analysis - University credits: 4
Asynchronous lectures: 10 hours
Synchronous lectures: 8 hours
Interactive learning: 22 hours
Synchronous lectures: 8 hours
Interactive learning: 22 hours
Programming and Algorithms I
INFO-01/A - Informatics - University credits: 9
Asynchronous lectures: 12 hours
Synchronous lectures: 16 hours
Interactive learning: 32 hours
Synchronous lectures: 16 hours
Interactive learning: 32 hours
Professor:
Anisetti Marco
Professor(s)