THREE-DIMENSIONAL MODELING

Course objectives

General objectives: to acquire computer programming skills in C/C ++, which is one of the most used languages by developers, and to apply the acquired computer skills to solve mathematical problems. Specific objectives: Knowledge and understanding: the students who have passed the exam will have a basic knowledge of computer programming and machine arithmetic and will be able to understand how to structure relatively simple algorithms to effectively solve mathematical problems. Apply knowledge and understanding: at the end of the course the students will be able to solve, through adequate algorithms, relatively simple mathematical problems. They will also be able to design and implement computer programs that interact appropriately with a potential user. Critical and judgmental skills: the students will have the basis to analyze elementary mathematical algorithms from the point of view of computational efficiency, stability and accuracy. They will also be able to understand that theoretical mathematical results must be reformulated to make them useful in the practice of finite arithmetic calculation. Communication skills: ability to expose and motivate the resolution proposed to certain problems chosen in sessions of exercises in the classroom and in the oral exam at the end of the course. Learning skills: the students will have to become familiar and practical with various elements which concern information technology such as the computer programming language, libraries, compilers, the software available on the Internet that offers an integrated development environment under different operating systems, etc. These skills will certainly allow them to learn more easily the use of other software of interest for scientific calculation and the world of work.

Channel 1
SILVIA NOSCHESE Lecturers' profile

Program - Frequency - Exams

Course program
The two parts of the course, Programming Lab and Calculus Lab, will run in parallel. The lab sessions will concentrate on the implementation of the algorithms studied in the Calculus Lab   Programming Lab (32 hours of lectures and 24 hours of laboratory practice)   How to write and run a basic program in C++ Machine arithmetic, notion of error and propagation  Algorithms: Computational cost and efficiency Programming in pseudocode and introduction to control flow instructions Compilers and integrated development environments Basic structure of programs in C/C++ Variables, type, INPUT / OUTPUT instructions Arithmetic operators, cycles Relational and logical operators, conditional expressions Math.h library Guidelines for working in the Linux environment Arrays Sorting of an array C++ functions Graphic representation   Calculus Lab: Introduction to Numerical Analysis (28 hours of lectures)   Gaussian elimination  Jacobi method Iterative methods for non-linear scalar equations Introduction to polynomial interpolation Introduction to numerical quadrature
Prerequisites
The course requires only a knowledge of elementary mathematics that students should have acquired during their high-school education.
Books
Teaching material related to the lectures will be made available on the e-learning webpage of the course.
Teaching mode
Lectures (60%), exercises (40%).
Frequency
strongly recommended
Exam mode
There is a single exam for the two parts of the course, Programming Lab and Calculus Lab. The exam will consist of a written test and an oral test, to which you will have access only if the written test (or the average of the two ongoing tests) resulted in a grade greater than or equal to 18. The written exam will consist of C++ programming exercises and numerical computation questions. The oral part will consist in a discussion of the topics discussed in class and on the programs assigned in the Lab sessions. The final grade will be the average of the scores gained in the written and in the oral exam.
Bibliography
Programming Lab 1. Luis J. Aguilar, “Fondamenti di programmazione in C++”. McGraw-Hill, 2008 2. Brian W. Kernighan, Dennis M. Ritchie, “Il linguaggio C”. Pearson, 2004 Calculus Lab: Introduction to Numerical Analysis 1. W. Gautschi, “Numerical analysis. An introduction”. Birkhäuser, 1997 2. A. Quarteroni, R. Sacco, F. Saleri, P. Gervasio “Matematica Numerica”. Springer, 2014
Lesson mode
Lectures (60%), exercises (40%).
Channel 2
GIUSEPPE VISCONTI Lecturers' profile

Program - Frequency - Exams

Course program
The information provided for the "Laboratorio di Calcolo" module also applies to the "Laboratorio di Programmazione" module. Programming Laboratory - Machine numbers and arithmetic, variables and types - Introduction to the C language, writing and compiling source code, and running executables - Use of libraries - Reading and writing from the terminal and files - Variable declaration and assignment, expressions - Relational and logical operators - Control flow: If, Switch - Loops and loop control: For, While, Do While, Break, Continue - Arrays, functions, and pointers - Graphical visualization of functions and data Computational Laboratory - Computational cost and efficiency - Iterative methods for nonlinear scalar equations - Polynomial interpolation and numerical quadrature - Direct and iterative methods for linear systems - Vector and matrix norms, condition number - Least squares
Prerequisites
No prior knowledge is required. However, familiarity with basic mathematical concepts typically acquired in secondary school is recommended, in particular: - elementary knowledge of algebra, functions, and trigonometry; - ability to solve simple logical and mathematical problems; - skills in abstract reasoning and in the formalization of procedures. Basic computer skills (managing files and folders, and using a text editor) are considered helpful, but will be introduced during the course if needed.
Books
The information provided for the "Laboratorio di Calcolo" module also applies to the "Laboratorio di Programmazione" module. Lecture notes provided by the instructors, available on the course's eLearning page.
Frequency
Attendance is recommended.
Exam mode
The exam is designed to assess learning through a single test divided into two parts, in which the student must demonstrate the computational and numerical skills acquired during the course. The first part of the exam will consist of a discussion of the main topics covered in the course. The second part will involve solving problems similar to those addressed during the lab sessions, with a focus on assessing the ability to write C code. The exam will have a duration of three hours at most.
Bibliography
- E. Suli, D. F. Meyers. An Introduction to Numerical Analysis. Cambridge University Press. - R. L. Burden, J. D. Faires, A. M. Burden. Numerical Analysis. Cengage Learnings. - M. McGrath. C Programming in easy steps. In Easy Steps Limited. - K. N. King. C Programming: A Modern Approach. W. W. Norton & Co. Inc. - A. Bellini, A. Guidi. Linguaggio C. Guida alla programmazione. McGraw Hill.
Lesson mode
The lessons will take place in the classroom and in the computer lab.
  • Academic year2025/2026
  • CourseMathematics
  • CurriculumGenerale
  • Year1st year
  • Semester1st semester
  • SSDMAT/08
  • CFU3