Introduction to programming and programming lab

[286SM]
a.a. 2025/2026

1° Year of course - Full year

Frequency Not mandatory

  • 15 CFU
  • 120 hours
  • Italian
  • Trieste
  • Obbligatoria
  • Oral Exam
  • SSD INF/01
  • Core subjects
Curricula: PERCORSO COMUNE

Structured into the following modules:

Syllabus

We will study theoretical models underlying distinct programming paradigms, allowing students to learn other languages in a short time. We will work practical sessions in Python and C, learning basic constructs, classes and data structures. We will overview more advanced concepts like algorithmic theory and software engineering. In the second part of the laboratory program we will study the various Python libraries useful for analyzing and manipulating data.
Knowledge and understanding: knowledge of programming fundamentals to write code in different paradigms, ability to create software in its entirety (architecture design, pseudocode and implementation). Demonstrate proficiency in using Python libraries such as Pandas and Numpy.
Making judgment: ability to write a complete program in Python and C, and to learn other languages ​​in a short time. Knowing how to generally choose the appropriate programming model for each problem. Ability to use the different Python libraries with respect to the task to be solved.
Communication skills: ability to communicate concepts effectively with non-experts and experts.

Learning skills: ability to build complete software in two distinct languages, using, in the case of Python, also the main libraries for data scientists.


None

- Theoretical models for programming paradigms
- Programmin in C and Python
- Advanced topics
- Programming laboratory I : Complete software development cycle, in Python, with error handling and unit tests.
- Programming laboratory II : Python Libraries for data analysis and manipulation.

Materials prepared for the students in the form of notebooks.
Think Python, di Allen B. Downey, 3d edition.
Python Data Science Handbook by Jake VanderPlas

Introduction to programming
C’s Syntax
C’s memory model
C’s blocks and scoping
Functions in C
Recursive vs iterative functions
Pointers and dynamic memory in C
Arrays in C
Problem solving with arrays
Introduction to computational complexity
Linked lists and advanced data structures in C
Differences C/Python
OOP
Inheritance in Python
List comprehension in Python
Functional programming in Python

Python Laboratory I:
Introduction to Python
Python programming logic: variables, data structures, branches, loops, functions, objects and classes.
Code versioning (GitHub)
Error handling
Input control
Testing.

Python Laboratory II:
Working with data in Python through the libraries: Pandas, Numpy, Scipy.
Data visualization with Matplotlib and Seaborn
Based on the potential of the class and depending on the interests of the class, more advance topics such as API and data collection from the WEB (REST AND HTTP requests) will be covered.

Frontal teaching, using the computer for the practical classes.

.

The exam consists of two independent parts, corresponding to the three different modules: Programming, Programming Laboratory I and II.
The final mark is computed as the average of the marks of each modulus weighted with respect to the credits. The minimum grade to pass the exam is 18 and the maximum grade is 30.
Honours may only be awarded in exceptional cases.
Programming: written exam, optional colloqium. Intermediate assessments will be considered. For the laboratory part, a coding project.
Programming Laboratory I and II: the exam consists of the execution of a project assigned a few days before the oral exam. To be admitted to the oral exam, the project must obtain a grade >= 18.

The oral exam consists of questions concerning or related to the project, and questions to assess the individual preparation on the topics of the course.

It is assessed
- the correctness of the code, and any heuristics
- the degree of understanding of the theoretical knowledge of the course

In any type of content produced by the student for admission to or participation in an exam (projects, reports, exercises, tests), the use of Large Language Model tools (such as ChatGPT and the like) must be explicitly declared. This requirement must be met even in the case of partial use.

Regardless of the method of assessment, the teacher reserves the right to further investigate the student's actual contribution with an oral exam for any type of content produced.

This course explores topics closely related to one or more goals of the United Nations 2030 Agenda for Sustainable Development (SDGs)

icona 4 icona  8 icona  9