SC/0011 - PROGRAMMING LANGUAGES FOR MATHEMATICS
Academic Year 2021/2022
Free text for the University
GIULIANO ARMANO (Tit.)
- Teaching style
- Lingua Insegnamento
|[60/65] MATHEMATICS||[65/50 - Ord. 2020] MATEMATICA PER LA DIDATTICA E LA DIVULGAZIONE||6||48|
|[60/65] MATHEMATICS||[65/60 - Ord. 2020] MATEMATICA APPLICATA||6||48|
The course aims to provide conceptual bases and concrete knowledge useful to the student for the drafting of computer programs in mathematics and statistics. The structure of the course will focus on making the student acquire the information concepts and the necessary basic knowledge on which modern programming is based, and then their implementation in an ad hoc programming language (Python). We will take steps to facilitate the process of autonomous processing of the concepts and practices learned, with the aim of creating a useful substrate for solving complex problems.
No specific prerequisites are required. The knowledge of one or more programming languages in the imperative-procedural field is however welcome.
The course will be organized as follows: a) notes on the main programming paradigms; b) introduction to the Python language; c) matrix programming and scientific visualization in Python; d) Python libraries for statistical data processing and for machine learning.
a) In relation to the main programming paradigms, a brief overview will be carried out, aimed at illustrating the distinctive characteristics of imperative-procedural, declarative, functional, and object-oriented programming. More space will be left for the description of object-oriented programming. [4h]
b) In this part the main features of the Python language will be introduced. In particular, the following topics will be carried out in sequence: data types (with lists, tuples and dictionaries), control structures, functions and parameter passing. The concepts of iterator and generator will also be introduced. Next, we will illustrate how Python implements object-oriented programming --with particular reference to the concepts of class, object, method, inheritance, and polymorphism. Short notes on operator overloading will also be made. [8 + 4 hours]
c) The part on matrix programming and scientific visualization in Python will focus on the characteristics and use of the numpy (vectors and matrices) and matplotlib (scientific visualization) libraries. Brief notes will also be made on advanced dataframe management methods (via Pandas) and on additional libraries for scientific visualization (seaborn and bokeh). [6 + 8 hours]
d) In the latter part of the course, some libraries for statistical data processing (scipy, Pandas) and for machine learning (sklearn, keras) will be introduced. The application called Orange, written in Python, will also be briefly illustrated, which allows you to develop statistics and data mining applications without the need to resort to explicit code programming. [6 + 10 hours]
The teaching will be carried out by appropriately balancing the theory with exercises and laboratory activities. In particular, with the exception of the main information concepts, every aspect related to the illustrated tools will be properly put into practice. It is assumed that the teaching will be delivered simultaneously both in presence and online, thus outlining a mixed teaching that can be attended in university classrooms but at the same time also online. At the beginning of the semester, each student may opt, with a binding choice, for face-to-face or distance teaching. Depending on the availability of the classrooms and the number of students who will opt for the attendance mode, there may be a shift for effective classroom access. In any case, all students must have adequate tools for carrying out exercises and laboratory activities. With regard to the presence in the laboratories, on the basis of the actual situation and of the decisions made by the University regarding the fight against the Covid-19 pandemic, shifts and / or replacement activities may be carried out online.
Verification of learning
The verification procedure will be made in form of written exam. The result of the written exam must be integrated by a computer test or by a programming paper. Based on the actual situation and on the decisions taken by the University to combat the Covid-19 pandemic, alternative verification methods could also be used through online supports. No intermediate tests are foreseen.
- O'Reilly, Alex Martelli, Anna Ravenscroft, Steve Holden, Python in a Nutshell, 2017.
- Mark Pilgrim, Dive into Python 3 [online su GitHub]
- Allen B. Downey, Think Python - How to think as a computer scientist (2nd edition) [also online].
The Web link containing the course program, the slides, as well as any news regarding the course itself, will be made known during the first actual lesson.