Software construction
Summary
Learn how to design and implement reliable, maintainable, and efficient software using a mix of programming skills (declarative style, higher-order functions, inductive types, parallelism) and fundamental software construction concepts (reusability, abstraction, encapsulation, composition, proofs)
Content
- Functional programming paradigm
- Recursion and tail-recursion
- Evaluation strategies, lazy evaluation, substitution model
- Modularity, data abstraction, representation independence
- Subtyping, inheritance, type classes
- Polymorphism, variance
- Structural induction
- Stateless parallelism, map-reduce, associative operations
- Effects: state, exceptions
- Documentation, tests, specification
- Interpreters and program semantics
- Program transformation and program correctness
Learning Prerequisites
Required courses
Any previous course programming course
Recommended courses
CS-107 Introduction à la programmation
CS-108 Pratique de la programmation orientée-objet
Important concepts to start the course
Loops, conditionals, variable and type declarations, computing mathematical expressions
Learning Outcomes
By the end of the course, the student must be able to:
- Implement reliable, efficient, and maintainable software
- Identify data types and operations that lead to computational solutions
- Argue that an implemented solution is correct
- Transform programs to change its behavior in a desirable way
- Design and implement data-parallel software using parallel collections
- Make use of type systems and tests to develop reliable software
Teaching methods
- Ex cathedra (live lectures)
- Recorded videos
- Exercise and lab sessions
- Online discussions
Expected student activities
- Attending lectures
- Watching and understanding recorded videos
- Solving exercises individually or in groups
- Completing individual graded programming assignments (labs)
- Completing midterm and end-of-semester exams
Assessment methods
- 30% Midterm exam during the semester
- 40% Final exam during the exam session
- 30% Programming assignments (labs)
Supervision
Office hours | Yes |
Assistants | Yes |
Forum | Yes |
Prerequisite for
CS-320 Computer language processing
CS-311 The Software enterprise - from ideas to products
CS-452 Foundations of software
CS-550 Formal verification
In the programs
- Semester: Fall
- Exam form: Written (winter session)
- Subject examined: Software construction
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 3 Hour(s) per week x 14 weeks
- Semester: Fall
- Exam form: Written (winter session)
- Subject examined: Software construction
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 3 Hour(s) per week x 14 weeks
- Semester: Fall
- Exam form: Written (winter session)
- Subject examined: Software construction
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 3 Hour(s) per week x 14 weeks
- Semester: Fall
- Exam form: Written (winter session)
- Subject examined: Software construction
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 3 Hour(s) per week x 14 weeks
- Semester: Fall
- Exam form: Written (winter session)
- Subject examined: Software construction
- Lecture: 3 Hour(s) per week x 14 weeks
- Exercises: 2 Hour(s) per week x 14 weeks
- Project: 3 Hour(s) per week x 14 weeks
Reference week
Mo | Tu | We | Th | Fr | |
8-9 | |||||
9-10 | |||||
10-11 | STCC - Cloud C | ||||
11-12 | INF2 INF1 INF119 INM10 | ||||
12-13 | CM011 CM013 CM012 CM1100 CM1106 CM1104 CM1120 | INF2 INF1 INF119 INM10 | |||
13-14 | |||||
14-15 | |||||
15-16 | SG1 | ||||
16-17 | INF2 INF1 INF3 | ||||
17-18 | |||||
18-19 | |||||
19-20 | |||||
20-21 | |||||
21-22 |
Légendes:
Lecture
Exercise, TP
Project, other
Wednesday, 15h - 16h: Lecture SG1
Wednesday, 16h - 18h: Project, other INF2
INF1
INF3
Thursday, 11h - 12h: Exercise, TP INF2
INF1
INF119
INM10
Thursday, 12h - 13h: Project, other INF2
INF1
INF119
INM10
Monday, 10h - 12h: Lecture STCC - Cloud C
Monday, 12h - 13h: Exercise, TP CM011
CM013
CM012
CM1100
CM1106
CM1104
CM1120