Introduction to Computer Programming

Course objectives

General objectives: Introduction to programming through the Python language. Specific objectives: Introduction to programming through the Python language. Data types, variables, assignments, control structures, functions, classes, modules and Input/Output. Data structures: arrays, strings, lists, tuples and dictionaries. Design and development of programs through procedural programming and object-oriented programming. Recursive and iterative algorithms. Python libraries for graphics, file handling, text/html processing and internet access. Program debugging and testing. Knowledge and understanding: Understand and define a problem's requirements. Choose how to represent the input and what data structures to use for intermediate computations and output. Define the algorithm solving the problem. Code the algorithm as a Python program. Modularize the program as small separate functions/methods. Test that the program satisfies the requirements. Apply knowledge and understanding: The student will work at home on a series of programming tasks, through the whole course, to practice and to show what has been learned. At the end of the course, the exam will be based on a lab test where she should solve and program various programming exercises. Critical and judgmental skills: The student, at the end of the course, should be able to autonomously choose how to solve a programming task (analysis, implementation and test). Communication skills: It is very important that the student has good text comprehension abilities for the problem analysis and requirement definition phase. Learning ability: The ability to analysis a problem to define its requirements and design both the necessary data structures and the correct algorithm will be applicable to other programming languages and will be very useful for the following programming courses.

Channel 1
DANIELE FRIOLO Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming using the Python language. Data Types, Variables, Assignments, Control Structures, Functions, Classes, Modules, and Input/Output. Data structures: vectors, strings, lists, tuples and dictionaries. Design and development of programs using procedural and object-oriented programming. Recursive and iterative algorithms. Text processing and image manipulations. Recursion Trees, Game Trees, recursive filesystem browsing. Solve recursive problems with python.
Prerequisites
Adequate initial knowledge acquired during high school, with particular regard to Italian and Mathematics, in particular discrete math. Good knowledge of English is of great help.
Books
Textbooks are as follows: [ita] Allen B. Downey - Pensare in Python [eng] Allen B. Downey - Thinking in Python 2nd edition Another textbook that could be useful: Charles Dierbach - Introduction to Computer Science Using Python: A Computational Problem-Solving Focus Python 3 Tutorial - https://docs.python.org/3/tutorial/ Other useful tools: PEP 8 - Style Guide for Python Code - How to write elegant code in python - https://www.python.org/dev/peps/pep-0008/ PEP 257 - Docstring Conventions - Documentation of functions with docstring - https://www.python.org/dev/peps/pep-0257/
Teaching mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
Frequency
It is up to the students but it is strongly advised to attend classes
Exam mode
Learn how to code implies a huge amount of time spent doing it. So this is not a theoretical class. For this reason, we expect to evaluate the students with two tests: 1) First assessment implies the students deliver a working program that solves a complex task and is tested against different test cases. These are 4 homework HW that are released during the course and they have to be completed within a deadline (2 weeks). In this way, during the course, the student learns how to code and debug a program. These HWs are uploaded by the students on a web app that evaluates them against the test cases and also other new, unseen test cases. Only those who submitted the HW and have a sufficient grade are allowed to take the exam. (Note we have recovery HW for those who do not pass the first HW). 2) The exam is made of a practical coding test done remotely. The coding test consists of solving 4 short exercises. Two of them cover the part related to string, matrices, images, and iterators; the other two cover the recursive functions and trees. The grade is the weighted average of 1) and 2) with 2) that has a higher weight.
Lesson mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
DANIELE FRIOLO Lecturers' profile

Program - Frequency - Exams

Course program
In this lab, students will take on exercises and rehearse the final exam. The contents of the exercises will revolve around the topics covered in the lectures. For the contents of the lectures, refer to the course description provided by prof. Sterbini.
Prerequisites
No prerequisites for the laboratory. For the main of the course, refer to the course description provided by prof. Sterbini.
Books
Exercises and materials will be provided through the course website. For the main of the course, refer to the course description provided by prof. Sterbini.
Frequency
Programming will happen in person in the lab.
Exam mode
Refer to the course description provided by prof. Sterbini.
ANDREA STERBINI Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming using the Python language. Data Types, Variables, Assignments, Control Structures, Functions, Classes, Modules, and Input/Output. Data structures: vectors, strings, lists, tuples and dictionaries. Design and development of programs using procedural and object-oriented programming. Recursive and iterative algorithms. Text processing and image manipulations. Recursion Trees, Game Trees, recursive filesystem browsing. Solve recursive problems with python.
Prerequisites
Adequate initial knowledge acquired during high school, with particular regard to Italian and Mathematics, in particular discrete math. Good knowledge of English is of great help.
Books
Textbooks are as follows: [ita] Allen B. Downey - Pensare in Python [eng] Allen B. Downey - Thinking in Python 2nd edition Another textbook that could be useful: Charles Dierbach - Introduction to Computer Science Using Python: A Computational Problem-Solving Focus Python 3 Tutorial - https://docs.python.org/3/tutorial/ Other useful tools: PEP 8 - Style Guide for Python Code - How to write elegant code in python - https://www.python.org/dev/peps/pep-0008/ PEP 257 - Docstring Conventions - Documentation of functions with docstring - https://www.python.org/dev/peps/pep-0257/
Teaching mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
Frequency
It is up to the students but it is strongly advised to attend classes
Exam mode
Learn how to code implies a huge amount of time spent doing it. So this is not a theoretical class. For this reason, we expect to evaluate the students with two tests: 1) First assessment implies the students deliver a working program that solves a complex task and is tested against different test cases. These are 4 homework HW that are released during the course and they have to be completed within a deadline (2 weeks). In this way, during the course, the student learns how to code and debug a program. These HWs are uploaded by the students on a web app that evaluates them against the test cases and also other new, unseen test cases. Only those who submitted the HW and have a sufficient grade are allowed to take the exam. (Note we have recovery HW for those who do not pass the first HW). 2) The exam is made of a practical coding test done remotely. The coding test consists of solving 4 short exercises. Two of them cover the part related to string, matrices, images, and iterators; the other two cover the recursive functions and trees. The grade is the weighted average of 1) and 2) with 2) that has a higher weight.
Lesson mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
ANDREA STERBINI Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming through the Python language. Data types, variables, assignments, control structures, functions, classes, modules and Input/Output. Data structures: arrays, strings, lists, tuples and dictionaries. Design and development of programs through procedural programming and object-oriented programming. Recursive and iterative algorithms. Python libraries for graphics, file handling, text/html processing and internet access. Program debugging and testing.
Prerequisites
It is required to have a good preparation on the main high-school courses, in particular Italian and Mathematics. A good level of English understanding is very helpful.
Books
Any initial book on the Python programming language - Allen B. Downey et al., How to Think Like a Computer Scientist - Allen B. Downey Thinking in Python 2nd edition (in inglese) - Guido van Rossum, Python Tutorial - Josh Cogliati, Non-Programmers Tutorial For Python
Teaching mode
The course is based on face-to-face lessons and demonstrations and on mandatory programming assignments.
Frequency
The exam simulations are optional
Exam mode
The exam is based on a lab test where the student must solve some programming exercises.
Lesson mode
The course is based on face-to-face lessons and demonstrations and on optional exaam simulations
Channel 2
IACOPO MASI Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming using the Python language. Data Types, Variables, Assignments, Control Structures, Functions, Classes, Modules, and Input/Output. Data structures: vectors, strings, lists, tuples and dictionaries. Design and development of programs using procedural and object-oriented programming. Recursive and iterative algorithms. Text processing and image manipulations. Recursion Trees, Game Trees, recursive filesystem browsing. Solve recursive problems with python.
Prerequisites
Adequate initial knowledge acquired during high school, with particular regard to Italian and Mathematics, in particular discrete math. Good knowledge of English is of great help.
Books
Textbooks are as follows: [ita] Allen B. Downey - Pensare in Python [eng] Allen B. Downey - Thinking in Python 2nd edition Another textbook that could be useful: Charles Dierbach - Introduction to Computer Science Using Python: A Computational Problem-Solving Focus Python 3 Tutorial - https://docs.python.org/3/tutorial/ Other useful tools: PEP 8 - Style Guide for Python Code - How to write elegant code in python - https://www.python.org/dev/peps/pep-0008/ PEP 257 - Docstring Conventions - Documentation of functions with docstring - https://www.python.org/dev/peps/pep-0257/
Teaching mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
Frequency
It is up to the students but it is strongly advised to attend classes
Exam mode
Learn how to code implies a huge amount of time spent doing it. So this is not a theoretical class. For this reason, we expect to evaluate the students with two tests: 1) First assessment implies the students deliver a working program that solves a complex task and is tested against different test cases. These are 4 homework HW that are released during the course and they have to be completed within a deadline (2 weeks). In this way, during the course, the student learns how to code and debug a program. These HWs are uploaded by the students on a web app that evaluates them against the test cases and also other new, unseen test cases. Only those who submitted the HW and have a sufficient grade are allowed to take the exam. (Note we have recovery HW for those who do not pass the first HW). 2) The exam is made of a practical coding test done remotely. The coding test consists of solving 4 short exercises. Two of them cover the part related to string, matrices, images, and iterators; the other two cover the recursive functions and trees. The grade is the weighted average of 1) and 2) with 2) that has a higher weight.
Lesson mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
IACOPO MASI Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming using the Python language. Data Types, Variables, Assignments, Control Structures, Functions, Classes, Modules, and Input/Output. Data structures: vectors, strings, lists, tuples and dictionaries. Design and development of programs using procedural and object-oriented programming. Recursive and iterative algorithms. Text processing and image manipulations. Recursion Trees, Game Trees, recursive filesystem browsing. Solve recursive problems with python.
Prerequisites
Adequate initial knowledge acquired during high school, with particular regard to Italian and Mathematics, in particular discrete math. Good knowledge of English is of great help.
Books
Textbooks are as follows: [ita] Allen B. Downey - Pensare in Python [eng] Allen B. Downey - Thinking in Python 2nd edition Another textbook that could be useful: Charles Dierbach - Introduction to Computer Science Using Python: A Computational Problem-Solving Focus Python 3 Tutorial - https://docs.python.org/3/tutorial/ Other useful tools: PEP 8 - Style Guide for Python Code - How to write elegant code in python - https://www.python.org/dev/peps/pep-0008/ PEP 257 - Docstring Conventions - Documentation of functions with docstring - https://www.python.org/dev/peps/pep-0257/
Teaching mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
Frequency
It is up to the students but it is strongly advised to attend classes
Exam mode
Learn how to code implies a huge amount of time spent doing it. So this is not a theoretical class. For this reason, we expect to evaluate the students with two tests: 1) First assessment implies the students deliver a working program that solves a complex task and is tested against different test cases. These are 4 homework HW that are released during the course and they have to be completed within a deadline (2 weeks). In this way, during the course, the student learns how to code and debug a program. These HWs are uploaded by the students on a web app that evaluates them against the test cases and also other new, unseen test cases. Only those who submitted the HW and have a sufficient grade are allowed to take the exam. (Note we have recovery HW for those who do not pass the first HW). 2) The exam is made of a practical coding test done remotely. The coding test consists of solving 4 short exercises. Two of them cover the part related to string, matrices, images, and iterators; the other two cover the recursive functions and trees. The grade is the weighted average of 1) and 2) with 2) that has a higher weight.
Lesson mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
Introduction to programming using the Python language. Data Types, Variables, Assignments, Control Structures, Functions, Classes, Modules, and Input/Output. Data structures: vectors, strings, lists, tuples and dictionaries. Design and development of programs using procedural and object-oriented programming. Recursive and iterative algorithms. Text processing and image manipulations. Recursion Trees, Game Trees, recursive filesystem browsing. Solve recursive problems with python.
Prerequisites
Adequate initial knowledge acquired during high school, with particular regard to Italian and Mathematics, in particular discrete math. Good knowledge of English is of great help.
Books
Textbooks are as follows: [ita] Allen B. Downey - Pensare in Python [eng] Allen B. Downey - Thinking in Python 2nd edition Another textbook that could be useful: Charles Dierbach - Introduction to Computer Science Using Python: A Computational Problem-Solving Focus Python 3 Tutorial - https://docs.python.org/3/tutorial/ Other useful tools: PEP 8 - Style Guide for Python Code - How to write elegant code in python - https://www.python.org/dev/peps/pep-0008/ PEP 257 - Docstring Conventions - Documentation of functions with docstring - https://www.python.org/dev/peps/pep-0257/
Teaching mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
Frequency
It is up to the students but it is strongly advised to attend classes
Exam mode
Learn how to code implies a huge amount of time spent doing it. So this is not a theoretical class. For this reason, we expect to evaluate the students with two tests: 1) First assessment implies the students deliver a working program that solves a complex task and is tested against different test cases. These are 4 homework HW that are released during the course and they have to be completed within a deadline (2 weeks). In this way, during the course, the student learns how to code and debug a program. These HWs are uploaded by the students on a web app that evaluates them against the test cases and also other new, unseen test cases. Only those who submitted the HW and have a sufficient grade are allowed to take the exam. (Note we have recovery HW for those who do not pass the first HW). 2) The exam is made of a practical coding test done remotely. The coding test consists of solving 4 short exercises. Two of them cover the part related to string, matrices, images, and iterators; the other two cover the recursive functions and trees. The grade is the weighted average of 1) and 2) with 2) that has a higher weight.
Lesson mode
Lessons are delivered in blended mode: one part of students follows in presence while the other remotely. In special cases, the lessons can be delivered just remotely. The course focuses on theoretical lessons (in the classroom) and exercises on programming in python (in the lab); Room CU033 Cabibbo - Delivery in blended mode Monday from 10 to 13 Friday from 8 to 10 To carry out the exercises, homework and exams we use the Python distribution that you can download from www.anaconda.com/download and which contains: Python 3.7 or 3.8 lots of standard and / or useful libraries the Spyder development environment For more information on how to install it, see https://docs.anaconda.com/anaconda/install NOTE: in the installation of Anaconda for Windows choose the option "Only for me" NOTE: in the course we use Spyder because it is the development environment that you will use during the exam (but at home you can use PyCharm or others at will)
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
In this lab, students will take on exercises and rehearse the final exam. The contents of the exercises will revolve around the topics covered in the lectures. For the contents of the lectures, refer to the course description provided by prof. Masi.
Prerequisites
No prerequisites for the laboratory. For the main of the course, refer to the course description provided by prof. Masi.
Books
Exercises and materials will be provided through the course website. For the main of the course, refer to the course description provided by prof. Masi.
Frequency
Programming will happen in person in the lab.
Exam mode
Refer to the course description provided by prof. Masi.
  • Lesson code1015883
  • Academic year2024/2025
  • CourseInformatics
  • CurriculumMetodologico
  • Year1st year
  • Semester1st semester
  • SSDINF/01
  • CFU9
  • Subject areaFormazione informatica di base