CS-214 / 8 credits

Teacher(s): Kuncak Viktor, Odersky Martin, Pit-Claudel Clément

Language: English


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:

  • 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

Software engineering:

  • Specifications: Documentation, requirements, properties
  • Verification: Debugging, tests, monitoring, property-based testing, proofs
  • Modularity: Code evolution and refactoring
  • Collaboration: Version control, changelogs

Learning Prerequisites

Required courses

Any previous 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

  • Implement reliable, efficient, and maintainable software
  • Identify data types and operations that lead to computational solutions
  • Argue that an solution is correct
  • Transform a program to change its behavior in a desirable way
  • Design and implement data-parallel software using parallel collections

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 / mini-projects)
  • 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

Resources

Virtual desktop infrastructure (VDI)

Yes

Moodle Link

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
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: mandatory
  • Semester: Fall
  • Exam form: Written (winter session)
  • Subject examined: Software construction
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Fall
  • Exam form: Written (winter session)
  • Subject examined: Software construction
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Fall
  • Exam form: Written (winter session)
  • Subject examined: Software construction
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Fall
  • Exam form: Written (winter session)
  • Subject examined: Software construction
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Fall
  • Exam form: Written (winter session)
  • Subject examined: Software construction
  • Courses: 3 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Lab: 3 Hour(s) per week x 14 weeks
  • Type: optional

Reference week

Monday, 10h - 12h: Lecture STCC - Cloud C

Wednesday, 15h - 16h: Lecture SG1 138

Wednesday, 16h - 18h: Exercise, TP INF2
INF1
INF3
INF019
INM201

Wednesday, 18h - 19h: Project, labs, other INF2
INF1
INF3
INF019
INM201
ELD120

Friday, 8h - 10h: Project, labs, other INF2
INF1
CO4
CO5
CO023
CO021
CO6

Related courses

Results from graphsearch.epfl.ch.