Course Details

Programming paradigms

MF0364

Course
Programming paradigms
Code
MF0364
Academic Year
2025/2026
Curriculum Year
2024/2025
Degree Programme
CHEMICAL SCIENCES
Curriculum
000 - CORSO GENERICO
Course coordinator
Lecturers
Credits
9
Lecture Hours
72
Scientific Disciplinary Sector (SSD)
INF/01 - Computer Science
Course Type
Single-subject learning activity
Course Delivery
OBB - Obbligatoria
Year
2
Teaching period
Primo Semestre
Campus
VERCELLI
Teaching language
Italian
Course Contents
The course consists of two parts. In the first, object-oriented programming in Java and the Test-based program development methodology are introduced. In the second part, functional programming is introduced using the Python language.
Reference Texts
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO.
Recommended:
Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style.
Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall.
Material supplied by the teacher.
Learning Outcomes
Mastering of the theoretical foundations of object-oriented and functional programming.
Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage non-standard cases through exceptions.
Prerequisites
Formal prerequisites: passing grade in the Programming 1 and 2 courses.

Substantial prerequisites: mastering the principles of imperative programming.
Teaching Methods
Classroom lessons and lab sessions.

In classroom lessons are introduced the theoretical topics through slide presentations, with examples and some question sessions to test student understanding.

In the lab sessions, students are guided in the implementation of simple projects designed to put into practice the theoretical knowledge acquired.
Additional Information
The student is presented with weekly exercises (optional), which solution is started during the lab sessions and that should be completed by the student. The exercises are discussed and corrected both individually and in the classroom.
The final tests (described in "modalità di verifica") assess the student autonomy with respect to the design, implementation and testing of object-oriented programs implemented in Java.
Students with physical disabilities, Learning Disabilities or Special Education Needs can request specific services and tools to the Staff of the "Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti", consulting the University webpage: https://www.uniupo.it/en/services/services-students-physical-or-learning-disabilities
Students with disabilities, learning disabilities or special education needs, once they have contacted the University Staff, can refer to the tutor in charge of the course to define the examination modalities, concerning academic aspects.
Assessment Methods
The exam consists of a laboratory test which in turn is structured in two parts, which the student has the possibility of carrying out in the same session on the same day or in separate sessions. The laboratory tests are one on object-oriented programming and one on functional programming.
The laboratory test is aimed at ascertaining: 1) for object-oriented programming the mastery of the programming tools introduced (use of IDE, test development) and of the theoretical concepts presented in class, 2) for functional programming the ability to interpret expressions conditionals, slices and functions and predicting their results is that of writing Python functions.
1) involves the implementation of 1-2 classes with the related test classes using the eclipse IDE and as test on theoretical knowledge the answer to 2-3 questions on object-oriented programming in Java (without the use of documentation). The score weighs 2/3 on the implementation of the classes and 1/3 on the answer to the questions.
2) involves answering (without the use of documentation) to 4 questions made up of a variable number of sub-questions and then the implementation of 4 functions (of which a generator). The vote weighs 60% on the implementation of the functions and 40% on the answer to the questions.
The second part requires carrying out a project personally or in a group of maximum 2 people. The project must be submitted before subscribing to the object-oriented programming laboratory test. The project is discussed during an oral exam. In the evaluation of the object-oriented programming test, the project counts for 50% and the laboratory test for 50%.
In the final evaluation, the object-oriented programming part weighs 2/3 of the grade and the functional programming part weighs 1/3, in line with the number of credits awarded for the three parts.
Detailed Syllabus
Introduction to Java.
Objects, classes, methods
Basic types, syntactic structures for flow control, arrays.
Wrappers for primitive types and auto-boxing/unboxing
Interfaces, polymorphism, inheritance
Parametric programming
Exception handling
Overview of the core libraries
New functional features of Java 8 and new collections libraries
Test-Driven Development
Pattern Programming Model-View-Controller and development of GUI.
Introduction to functional programming in Python.
Functions as values
Higher order functions
Immutable data
Lazy evaluation
Working with Collections: recursion and reduction
Expected Learning Outcomes
Knowledge and understanding: familiarity with the principles of object oriented and functional programming, with the specific Java language, the model/view/controller architecture and the language Python.

Applying knowledge and understanding: ability to design and implement a project using object programming tools and deriving code from tests.

Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is more or less appropriate and 3) and to evaluate the architectural quality of a project.

Communication Skills: mastering the specific terminology of object programming and functional programming and improving teamwork skills.

Learning Skills: ability to learn autonomously the use of other languages and other object oriented and/or functionally structured libraries.
Last update:09-09-2026 00:14:31