Programming Languages
Course objectives
General objectives: The course investigates the foundations of programming languages. Special attention is given to static and dynamic semantics (type theory, operational and axiomatic semantics) and to formal tools for software specification and verification. Specific objectives: Inductive algebras are studied as foundations to abstract syntax, data structures and simple (equational) program logics. Elements of co-induction in connection with lazy structures the semantics of concurrency. Comparing lazy vs. eager languages, static vs. dynamic binding within different programming paradigms: imperative, functional and object-oriented. Type theory, ML- and Java-style polymorphism. Knowledge and understanding: The student will acquire foundational knowledge on programming languages and their paradigms, and will be able to picture in a coherent conceptual map some of the main research areas of theoretical computer science. Application of knowledge and understanding: At the end of the course students will be familiar with different programming paradigms and program logics. Functional programming will be introduced and a basic knowledge of SML and its type theory will be acquired. Judgment skills: Students will acquire notions necessary to develop quality software and to understand the modern developments of programming languages. Communication skills: Students will learn to use mathematics and logics to describe, develop and analyze software, and to integrate the formal approach with an intuitive presentation of ideas. Learning ability: The use of mathematics in the theory and practice of programming helps developing logical and analytical skills and a deeper understanding of programming languages.
- Lesson code1022264
- Academic year2025/2026
- CourseComputer Science
- CurriculumTecnologico
- Year3rd year
- Semester1st semester
- SSDINF/01
- CFU6