THREE-DIMENSIONAL MODELING

Course objectives

General objectives: This course will introduce students to very basic algorithm design and analysis. They will learn various established algorithms for solving fundamental problems, such as sorting or searching, together with the simplest tools to analyze them. Knowledge and understanding At the end of the course, students will be familiar with the basic methodologies for the design and analysis of iterative and recursive algorithms, elementary data structures, major sorting algorithms, and the most basic implementations of the dictionaries. Apply knowledge and understanding: At the end of the course, students will have become familiar with the main basic data structures, in particular those implementing dictionaries. They will be able to explain the algorithms and analyze their time complexity, highlighting how their performances depend on the used data structure. They will be able to design new data structures and related algorithms based on the existing ones; they will be able to explain the main sorting algorithms, illustrating the underlying design strategies and their time complexity analysis; they will be able to compare the asymptotic behavior of the execution times of the studied algorithms, to design recursive solutions to problems and to analyze their asymptotic time complexity. Critical and judgmental skills Students will be able to analyze the quality of an algorithm and related data structures, both from the effective resolution of the problem and from the time complexity point of view. Communication skills Students will acquire the ability to expose their knowledge in a clear and organized way, which will be verified both through the written tests and during the oral examination. Students will be able to express an algorithmic idea rigorously at a high level, in pseudocode. Learning ability The acquired knowledge will allow students to face the study of other algorithmic design methodologies and more advanced data structures within a master's degree course.

Channel 1
ANGELO SPOGNARDI Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming through the Python language (4 hours) Data types, variables, assignments, control structures, functions, classes, modules, and Input/Output (10 hours) Basic data structures: arrays, strings, lists, tuples, and dictionaries (16 hours) Leverage the basic data structures to design and develop programs through procedural programming and object-oriented programming (4 hours) Program debugging and testing (2 hours) Differences between recursive and iterative algorithms (12 hours) Python libraries for graphics, file handling, text/HTML processing, and internet access (12 hours)
Prerequisites
It is required to have a good preparation for the main high-school courses, in particular English and Mathematics.
Books
Think Python 2nd Edition by Allen B. Downey Introduction to Computation and Programming Using Python, Second Edition. John V. Guttag.
Teaching mode
The teaching will be structured in lectures, taking place in a face-to-face or remote or blended setting (depending on the current health situation and the directions of the University Central Offices). The plan is to have lectures held in a multimedia lab. The teaching is based on face-to-face lectures mixed with exercises and interactive programming and discussion sessions. During the lectures, curriculum topics will be presented or revisited and, consequently, students are asked to solve some simple exercises that, later, will be solved collectively. Practical aspects of the curriculum will cover around 75% of the overall time of the course.
Frequency
In class
Exam mode
To properly assess the fulfillment of the learning objectives, students will be evaluated taking into account: 1.the four mandatory programming assignments, for assessing their ability to apply acquired knowledge and understanding; 2.a lab test with programming exercises, for assessing their learning ability; 3.their participation and contribution to the official discussion board, for assessing their communication skills; 4.their contribution to the peer-review evaluation of the four mandatory assignment, for assessing their critical and judgment skills. The lab test is planned to be arranged in the multimedia lab. It should span the time of three hours, for solving four exercises. The four mandatory programming assignments are planned for the 6th, 8th, 10th, and 12th weeks of the course. Each assignment will undergo an anonymous round of peer-review among the students, to improve the overall quality of the artifacts. The average evaluation of the four mandatory programming assignments will contribute one-third to the final grade. The lab test will contribute two-third to the final grade. The participation in the discussion board and the quality of the peer-review support will contribute to obtaining a bonus to be added to the final grade.
Bibliography
Additional suggested readings: Guido van Rossum, Python Tutorial Josh Cogliati, Non-Programmers Tutorial For Python F. Pellacini, Fondamenti di Programmazione in Python F. Pellacini, Codice di Fondamenti di Programmazione in Python
Lesson mode
The teaching will be structured in lectures, taking place in a face-to-face or remote or blended setting (depending on the current health situation and the directions of the University Central Offices). The plan is to have lectures held in a multimedia lab. The teaching is based on face-to-face lectures mixed with exercises and interactive programming and discussion sessions. During the lectures, curriculum topics will be presented or revisited and, consequently, students are asked to solve some simple exercises that, later, will be solved collectively. Practical aspects of the curriculum will cover around 75% of the overall time of the course.
  • Academic year2025/2026
  • CourseApplied Computer Science and Artificial Intelligence
  • CurriculumSingle curriculum
  • Year1st year
  • Semester1st semester
  • SSDINF/01
  • CFU6