Skip to main content
CODE 118063
ACADEMIC YEAR 2025/2026
CREDITS
SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05
LANGUAGE English
TEACHING LOCATION
  • GENOVA
SEMESTER 1° Semester
MODULES Questo insegnamento è un modulo di:

AIMS AND CONTENT

LEARNING OUTCOMES

Upon successful completion of this teaching unit, students will be able to develop robust, maintainable, and efficient Python code, with particular attention to the analysis and manipulation of datasets, and simple multimedia processing, including image and video analysis.

AIMS AND LEARNING OUTCOMES

This teaching unit offers a comprehensive introduction to Python programming with a strong emphasis on writing robust, maintainable, and efficient code. Designed for students with little to no prior programming experience, the course progressively builds skills in core Python concepts and advanced techniques for data manipulation and multimedia processing.

Students will learn to analyze and manipulate datasets using Python’s powerful libraries, such as Pandas and NumPy, and gain hands-on experience in processing images and videos using tools like OpenCV and PIL. Through practical assignments and projects, students will develop the ability to write clean, modular code and apply it to real-world problems in data science and multimedia applications.

By the end of the teaching unit, students will be equipped to:

  • Develop efficient and maintainable Python programs.
  • Perform data analysis and transformation using Python libraries.
  • Implement basic image and video processing techniques.
  • Apply programming skills to solve practical problems in data and multimedia domains.

TEACHING METHODS

This teaching unit employs a blended and hands-on teaching approach designed to foster both conceptual understanding and practical proficiency in Python programming. The teaching methods include:

  1. Lectures and Demonstrations: weekly lectures introduce core programming concepts, data analysis techniques, and multimedia processing tools. Live coding demonstrations are used to illustrate real-time problem-solving and best practices in Python development.
  2. Interactive Coding Sessions: students engage in guided coding exercises during class to reinforce lecture material. Emphasis is placed on writing clean, modular, and efficient code through collaborative problem-solving.
  3. Practical Assignments: weekly assignments provide opportunities to apply concepts to real-world scenarios, including data manipulation and multimedia tasks. Assignments are designed to build progressively toward more complex applications.
  4. Project-Based Learning: a capstone project allows students to explore a topic of interest in data or multimedia analysis. Students work individually or in small teams to design, implement, and present their projects, fostering creativity and independent learning.
  5. Peer Review and Code Critique: students participate in peer code reviews to develop critical thinking and collaborative skills. Constructive feedback sessions help improve code quality and understanding of software development practices.
  6. Use of Digital Tools: jupyter Notebooks are used for interactive coding and documentation. Version control with Git may be introduced to support collaborative work and code management.
  7. Office Hours and Support: regular office hours and online discussion forums provide additional support and personalized guidance. Teaching assistants may be available to help with debugging and conceptual questions.

Students with valid certifications for Specific Learning Disorders (SLDs), disabilities or other educational needs are invited to contact the teacher and the School's contact person for disability at the beginning of teaching to agree on possible teaching arrangements that, while respecting the teaching objectives, take into account individual learning patterns. Contacts of the School's disability contact person can be found at the following link Comitato di Ateneo per l’inclusione delle studentesse e degli studenti con disabilità o con DSA | UniGe | Università di Genova

SYLLABUS/CONTENT

The teaching unit will cover the following aspects of Python programming:

  • Introduction to programming: computer architectures; memory and data; CPU and programs; programming languages; problems, algorithms and programs.
  • How to use the Python interpreter: invoking the interpreter; passing arguments; interactive mode; notebooks; online coding platforms.
  • Basic concepts of Python programming: variables and assignments; expressions and statements; operations; printing; comments; debugging; data types; numbers and strings; input.
  • Functions: built-in functions; function calls; importing modules and functions; mathematical functions; function composition; defining new functions; parameters and arguments; mandatory and optional arguments; order of arguments and keyword assignment; scope of a variable.
  • Making decisions: boolean expressions and logical operators; conditional and alternative execution; if-elif-else statement; chained and nested conditionals.
  • Iterations: reassigning and updating variables; while statement; break statement; sequences and loops; the in operator; the for construct.
  • Data structures (strings, lists, tuples, dictionaries): definition, properties, operations, and methods; indexing vs. assignment; mutability vs. immutability; map, flter, and reduce; referencing and aliasing; packing and unpacking; lookup and reverse lookup; variable-length arguments.
  • Files: persistence; opening and closing and the with construct; reading and writing; format operator; file names and paths; catching exceptions; pickling.
  • Modules and packages: defining a module; defining a package; importing a package vs. importing a module vs. importing a function; installing packages.
  • Classes and objects: classes, types, objects, and instances; instances as return values; attributes and methods; object mutability; instantiation and the __init__ method; operator overloading and special methods; static methods and class methods; inheritance.
  • Pythonic programming: conditional expressions; EAFP (Easier to Ask for Forgiveness than Permission); list comprehension; generator expressions; any and all operators; sets.
  • Scientific programming: Numpy, arrays and broadcasting; Pandas, dataframes and series; Scikit Learn and introduction to machine learning with Python; Matplotlib and data visualization in Python
  • Introduction to Multimedia Processing: overview of multimedia data types, introduction to image and video formats, using PIL and OpenCV basic
  • Image and Video Processing with OpenCV: reading, displaying, and saving images, color spaces and transformations, filters, edge detection, and contours, capturing video from files and webcams, frame-by-frame processing, simple object detection and tracking

RECOMMENDED READING/BIBLIOGRAPHY

Allen B. Downey, Think Python: How to Think Like a Computer Scientist (2nd Edition), O’Reilly Media, 2015.
A beginner-friendly introduction to programming concepts using Python.

Jake VanderPlas, Python Data Science Handbook, O’Reilly Media, 2016.
Covers essential tools for data science in Python, including NumPy, Pandas, Matplotlib, and Scikit-learn.

Charles Severance, Python for Everybody: Exploring Data Using Python 3, CreateSpace, 2016.
A gentle introduction to Python with a focus on data handling and practical applications.

Mark Lutz, Learning Python (5th Edition), O’Reilly Media, 2013.
A comprehensive introduction to Python, covering both fundamental and advanced topics.

Wes McKinney, Python for Data Analysis (3rd Edition), O’Reilly Media, 2022.
Focuses on data wrangling with Pandas, NumPy, and Jupyter—ideal for the data analysis portion of the course.

Adrian Rosebrock, Practical Python and OpenCV (3rd Edition), PyImageSearch, 2016.
A hands-on guide to image and video processing using OpenCV and Python.

Python Official Documentation

Pandas Documentation

NumPy Documentation

OpenCV-Python Tutorials

Jupyter Project

TEACHERS AND EXAM BOARD

LESSONS

Class schedule

The timetable for this course is available here: Portale EasyAcademy

EXAMS

EXAM DESCRIPTION

The final exam is designed to assess students’ understanding and practical application of the core concepts covered throughout the course. It evaluates both theoretical knowledge and hands-on programming skills in Python, with a focus on data manipulation and multimedia processing.

Format

Duration: 2 hours

Type: Written and practical (computer-based)

Structure:

  • Section A – Conceptual Questions (30%)
    Short-answer and multiple-choice questions covering Python syntax, data structures, object-oriented programming, and key libraries (e.g., Pandas, NumPy, OpenCV).

  • Section B – Code Analysis and Debugging (30%)
    Students will analyze, interpret, and correct Python code snippets related to data and multimedia tasks.

  • Section C – Programming Task (40%)
    A hands-on coding exercise where students write a complete Python script to solve a problem involving dataset manipulation or basic image/video processing.

ASSESSMENT METHODS

1. Weekly Assignments (30%)

  • Short, practical exercises focused on applying concepts from lectures and labs.
  • Tasks include writing Python scripts, analyzing datasets, and performing basic image/video processing.
  • Encourages consistent practice and incremental learning.

2. Midterm Quiz (10%)

  • A written or computer-based quiz assessing foundational knowledge of Python syntax, data structures, and basic data manipulation.
  • Includes multiple-choice, short-answer, and code interpretation questions.

3. Final Project (30%)

  • A capstone project where students design and implement a small application or analysis pipeline.
  • Project options include:
    • Data analysis and visualization of a real-world dataset.
    • Image or video processing application using OpenCV.
  • Assessed on functionality, code quality, documentation, and presentation.

4. Final Exam (20%)

  • A comprehensive exam combining theoretical questions and practical coding tasks.
  • Tests students’ ability to write efficient, maintainable code and solve problems independently.

5. Participation and Engagement (10%)

  • Active involvement in class activities, coding labs, and peer discussions.
  • May include peer reviews, group exercises, and contributions to online forums or collaborative platforms.