Foundations of software
Summary
The course introduces the foundations on which programs and programming languages are built. It introduces syntax, types and semantics as building blocks that together define the properties of a program part or a language. Students will learn how to apply these concepts in their reasoning.
Content
- simple types, lambda-calculus
- normalization, references, exceptions
- recursive types
- polymorphism
- proposition as types
- Tentatively: combinatory logic, calculus of inductive constructions
Keywords
lambda-calculus, type systems
Learning Prerequisites
Recommended courses
Advanced topics in programming, Compiler construction
Important concepts to start the course
Functional programming
Basic knowledge of formal languages
Learning Outcomes
By the end of the course, the student must be able to:
- Argue design decisions of programming languages
- Assess / Evaluate soundness of type systems
- Design programming language semantics and typing rules
- Verify progress and preservation in type systems
- Work out / Determine operational equivalences
- Carry out projects of 2-3 weeks duration
- Distinguish valid from invalid proofs
- Implement type systems and operational semantics
Transversal skills
- Assess progress against the plan, and adapt the plan as appropriate.
- Evaluate one's own performance in the team, receive and respond appropriately to feedback.
- Identify the different roles that are involved in well-functioning teams and assume different roles, including leadership roles.
- Manage priorities.
Teaching methods
Ex cathedra, practical exercises
Assessment methods
Final written exam during the exam session (60%)
Projects and homeworks by groups during the semester (40%)
In the programs
- Semester: Spring
- Exam form: Written (summer session)
- Subject examined: Foundations of software
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: Written (summer session)
- Subject examined: Foundations of software
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: Written (summer session)
- Subject examined: Foundations of software
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: Written (summer session)
- Subject examined: Foundations of software
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: optional
- Semester: Spring
- Exam form: Written (summer session)
- Subject examined: Foundations of software
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 2 Hour(s) per week x 14 weeks
- Type: optional
Reference week
Mo | Tu | We | Th | Fr | |
8-9 | |||||
9-10 | |||||
10-11 | |||||
11-12 | |||||
12-13 | |||||
13-14 | |||||
14-15 | |||||
15-16 | |||||
16-17 | |||||
17-18 | |||||
18-19 | |||||
19-20 | |||||
20-21 | |||||
21-22 |