Course Details

Programming paradigms

MF0364

Course
Programming paradigms
Code
MF0364
Academic Year
2026/2027
Curriculum Year
2025/2026
Degree Programme
CHEMISTRY
Curriculum
000 - CORSO GENERICO
Course coordinator
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 part, object-oriented programming and the test-driven development methodology are introduced. In the second part, functional programming is introduced. The languages used experimentally to illustrate the two main programming paradigms introduced in these lectures are Java and Python, respectively.
Reference Texts
Paul J. Deitel - Harvey M. Deitel Programmare in Java, 11° edizione, Pearson.Luciano Ramalho, Fluent Python, 2nd Edition, O'ReillyMateriale fornito dai docentiAlternative textbook OO programming:Claudio De Sio Cesari, Programmazione Java, Nuove Tecniche e Paradigmi, Hoepli
Learning Outcomes
The goal of the course is to provide the class with the theoretical foundations of object-oriented and functional programming, through lessons that combine expository and interactive teaching methods.. The student that passes the exam are supposed: to model an application by identifying the components and the best paradigm for their description; to design and implement the chosen solution using both Java and Python; to perform tests with Junit; to master the Java Collections framework; to be able to recognize and manage non-standard cases through exception.
Prerequisites
Formal prerequisites: passing grade in the Programming 1 and 2 courses. Substantial prerequisites: mastering the principles of imperative programming.
Teaching Methods
Lectures that introduce theoretical concepts and laboratory exercises that apply them. In the lessons, theoretical topics are addressed through slide presentations, with examples and some questions to verify students' learning. In laboratory exercises, students are guided in the implementation of simple projects aimed at putting 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 " Assesment methods") are designed on the basis of the exercises assigned in the classroom.
Students with physical disabilities, Learning Disabilities or Special Education Needs can request specific services and tools via the Staff 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 assesses competencies through a mandatory written test lasting a maximum of two hours and an optional oral project discussion lasting a maximum of one hour.

The written examination takes place on the scheduled exam date and consists of a quiz with questions of varying difficulty, corresponding to different score levels, for a maximum of 28 points. The highest grades can only be achieved if, after passing the written examination with a minimum score of 26, the student informs the instructor of their intention to complete an additional Java project.

A score of 18–20 represents a passing grade and certifies a basic understanding of the theory of functional and object-oriented programming paradigms.

A score of 21–23 certifies an intermediate level of competence in functional and object-oriented programming paradigms.

A score of 24–26 demonstrates the ability to apply functional and object-oriented programming paradigms effectively.

A score of 27–28 demonstrates the ability to apply functional and object-oriented programming paradigms in an optimized and proficient manner.

A score of 29–30 is reserved for students who, after passing the written examination with a minimum score of 26, choose to develop a complete Java project agreed upon with the instructor.

The highest distinction (30 cum laude) is reserved for students who, in addition to achieving the highest possible score in both the written examination and the project, successfully complete an oral discussion with outstanding performance, demonstrating complete autonomy in modifying, explaining, and critically discussing their code.

To prepare for the exam, students are advised to systematically study the textbooks and teaching materials published on the DIR platform, while autonomously and conscientiously completing the proposed exercises and assignments. Additionally, sample exam papers will be made available on the same platform.
Detailed Syllabus
OO ParadigmIntroduction to Object Oriented Programming and 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 9 and new collections libraries Test-Driven Development Pattern Programming Model-View-Controller Functional ParadigmIntroduction to functional programming and to 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, the model/view/controller architecture and the methodologies for software testing. Applying knowledge and understanding: ability to design and implement a project using object programming tools, with the specific Java language, and functional programming tools, with Python language, and deriving code from tests. Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is appropriate and 3) 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.
To achieve the knowledge and skills corresponding to the minimum passing level, the class is required to know and understand the fundamentals of functional and object-oriented programming paradigms. To reach an advanced level, students must be able to apply functional and object-oriented programming paradigms in an optimized manner and develop a project in Java.
Last update:09-09-2026 00:14:31