CODE 90546 ACADEMIC YEAR 2025/2026 CREDITS 6 cfu anno 1 COMPUTER SCIENCE 11964 (LM-18) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE English TEACHING LOCATION GENOVA SEMESTER 2° Semester OVERVIEW Students will be provided with a deeper and more critical knowledge of programming languages, through the learning of theoretical foundations and the comparison of different paradigms. AIMS AND CONTENT LEARNING OUTCOMES Gaining a deeper and more critical knowledge of programming languages, through the learning of theoretical foundations and the comparison of different paradigms. AIMS AND LEARNING OUTCOMES At the end of the course, studentes will be able to: Deeply understand the notions presented in the course. Pratice with some expertise in the proposed programming paradigms. PREREQUISITES No specific prerequisites are required. TEACHING METHODS Lectures, small project. SYLLABUS/CONTENT Foundations: small-step semantics, type systems, soundness Functional paradigm: lambda calculus, call-by-value and call-by-name, simply-typed lambda-calculus, polymorphism, Hindley-Milner inference. Functional programming in Haskell, lazy evaluation, type classes. Effects: extensions of lambda-calculus with imperative features and exceptions Object-oriented paradigm: subtyping, Featherweight Java Logic paradigm: Prolog syntax, model-theoretic semantics, SLD resolution. Coinduction and coinductive logic programming RECOMMENDED READING/BIBLIOGRAPHY Course notes and slides Benjamin Pierce, Types and Programming Lannguages TEACHERS AND EXAM BOARD FRANCESCO DAGNINO Ricevimento: By appointment via email LESSONS LESSONS START According to the calendar approved by the Degree Program Board: https://corsi.unige.it/corsi/11964/studenti-orario Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION The exam will consist of an oral test and possibly the development of a small project. ASSESSMENT METHODS The oral exam checks the correct understanding of the concepts, and the ability of presenting them appropriately. The development of a small project checks that the student has experimented the proposed programming paradigms. FURTHER INFORMATION For further information, please refer to the course’s AulaWeb module or contact the instructor.