PROGRAMMING AND INTRODUCTION TO ARTIFICIAL INTELLIGENCE
cod. 1012441

Academic year 2024/25
1° year of course - Second semester
Professor responsible for the course unit
ZAMMORI Francesco
integrated course unit
9 credits
hub:
course unit
in ITALIAN

Learning objectives

By the end of the course, students will master the main tools for data
analysis and for numerical calculation. Specifically they will kwno both "procedural" and "object oriented" programming.
Elements of "functional" programming will be also provided.
Students will also obtain basik skills in ML and AI.

Prerequisites

The course only requires basic skills in information science and in statistics.
anyhow, to
foster the comprehension, all topics will be introduced and explained
starting from scratch.

Course unit content

The course introduces the main IT tools for data science and for the solution of typical engineering and operating research
problems. The focus is on Python 3.10 programming language and on its main libraries for scientific programming and numerical computing, that are propedeutic to the development of advanced applications based on Machine Learning (ML) and Arificial Intelligence (AI).
At the end of the course, some basic notions of ML and AI will be provided. In particular some simple regression and classification models will be developed starting from scratch. A simple peceptron will be also developed and tested.

Full programme

- Introduction to programming.
- Decision Making.
- Repetitions and interation.
- Basic Functions.
- Advanced types and their methods.
- Lambda functions.
- Functions accepting other function as input.
- Closures: functions returning another function.
- Recursion: functions calling themselves.
- Iterator and Generator.
- Exception management and Code Debugging.
- Object Orienting Programming.
- Methods and magic methods.
- Inheritance and polymorphism.
- Properties.
- Creating user defined structures.
- Creating regression and classification models.
- Creating simple neural networks.

Bibliography

1) Pensare in Python, by Allen Downey, edited by O’Reilly
2) Learning Python, by Mark Lutz, edited by O’Reilly
3) The Python Workbook, Second Edition, by Ben Stephenson Edited by Springer
4) Hands-On Machine Learning with Scikit-Learn & TensorFlow, by Aurélien Géron, Edited by O'Reilly
Also, lecturer's teaching handouts (covering the whole program) will be provided in advance.

Teaching methods

The course includes both theoretical and practical aspects.
The theoretical part will be introduced writing on the blackboard (using coloured
chalks) and, next, all the topics covered during the theory lessons will be
deepened and operationalized during practical sessions, held in the
computer labs (about 50% of the total time).

Assessment methods and criteria

The examination consists of a written test and an oral test.
The written test, which lasts approximately 2.5 hours, consists of 4 - 5 exercises of increasing difficulty. The test is organised in such a way that it can be done entirely ‘on paper’, but it is still possible to do it using your own laptop (and this is the recommended mode).
Students will also have to prepare a final paper (individually or in groups of a maximum of 3) that will be discussed during the oral test. This test will mainly focus on the discussion of the final paper, but may also include general theory questions.

Other information

About 50% of the lessons will be hold in traditional classrooms, while the
remainder will be held in computer labs. For a better understading,
students are encouraged to take their laptop also during the theoretical
lessons. For convenience, students are allowed to use their
personal laptop instead of the PCs installed in the labs.
Anyhow, students must install Python 3.10 (or a superior version) on their laptop. Students are also encouraged to install the ANACONDA programming environment on their laptop and to write code using the editor Spyder and/or Jupiter Notebook (both included in ANACONDA).