This class provides a comprehensive introduction to computer programming using the Python language, along with a foundational understanding of data structures and algorithms. The class is designed to equip students with the skills needed to write and debug Python programs and to apply fundamental algorithms and data structures to solve problems. Students will learn both the theoretical underpinnings and practical applications of programming and algorithms through a combination of lectures, practical exercises, and laboratory sessions.
Course Prerequisites
No requirements
Teaching Methods
Lectures. Each lecture presents both theoretical and practical issues, as well as examples. The educational material is available in advance. The student is invited to be present in the classroom after having read the lesson material. The lesson will be carried out in such a way as to increase interaction, discussion and consequently learning.
Assessment Methods
The objective of the exam is to verify the acquisition of the knowledge and skills described in the "Educational goals" section, assessing the level of knowledge and the ability to put into practice the design techniques seen in class. Final exam is composed of a practice/written test. The test - of an approximate duration of 120 minutes - includes a series of 4 problems to solve and 4 questions related to the topics covered in class.
Contents
Part I - Introduction to Python Programming: - Variables, constants, and elementary data types - Assignment and composite statements - Basics of input/output - Expressions and operators - Control structures: selection and loops - Arrays - Introduction to recursion - Classes Part II - Computation Theory: - Models of computation and complexity (modelling, asymptotic notations, RAM and RASP computation models, cost criteria, procedural languages) - Basic algorithms and elementary data structures (arrays, matrices, lists, stacks, queues, graphs and trees - representation and traversal, sorting) - Advanced algorithms and data structures (digital sorting, heap and heapsort, hash tables, binary search trees, balanced trees, partitions) - Design techniques (divide and conquer, dynamic programming, greedy algorithms)
Course Language
Italian
More information
The teacher receives by appointment, upon request by e-mail to alessandro.lupi@uninsubria.it.