Course

CS-214: 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)

About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.
Instructors (3)
Viktor Kuncak
Viktor Kunčak joined EPFL in 2007, after receiving a PhD degree from MIT. Since then has been leading the Laboratory for Automated Reasoning and Analysis and supervised at least 12 completed PhD theses. His works on languages, algorithms and systems for verification and automated reasoning. He served as an initiator and one of the coordinators of a European network (COST action) in the area of automated reasoning, verification, and synthesis. In 2012 he received a 5-year single-investigator European Research Council (ERC) grant of 1.5M EUR. His invited talks include those at Lambda Days, Scala Days, NFM, LOPSTR, SYNT, ICALP, CSL, RV, VMCAI, and SMT. A paper on test generation he co-authored received an ACM SIGSOFT distinguished paper award at ICSE. A PLDI paper he co-authored was published in the Communications of the ACM as a Research Highlight article.  His Google Scholar profile reports an over-approximate H-index of 38.  He was an associate editor of ACM Transactions on Programming Languages and Systems (TOPLAS) and served as a co-chair of conferences on Computer-Aided Verification (CAV), Formal Methods in Computer Aided Design (FMCAD), Workshop on Synthesis (SYNT), and Verification, Model Checking, and Abstract Interpretation (VMCAI).  At EPFL he teaches courses on functional and parallel programming, compilers, and verification. He has co-taught the MOOC "Parallel Programming" that was visited by over 100'000 learners and completed by thousands of students from all over the world.
Martin Odersky
Martin Odersky heads the programming research group at EPFL. His research interests cover fundamental as well as applied aspects of programming languages. They include semantics, type systems, programming language design, and compiler construction. The main focus if his work lies in the integration of object-oriented and functional programming. His research thesis is that the two paradigms are just two sides of the same coin and should be unified as much as possible. To prove this he has experimented a number of language designs, from Pizza to GJ to Functional Nets. He has also influenced the development of Java as a co-designer of Java generics and as the original author of the current javac reference compiler. His current work concentrates on the Scala programming language, which unifies FP and OOP, while staying completely interoperable with Java and .NET. Martin Odersky got his doctorate from ETHZ, in 1989. He held research positions at the IBM T.J. Watson Research Center from 1989 and at Yale University from 1991. He was then a professor at the University of Karlsruhe from 1993 and at the University of South Australia from 1997. He joined EPFL as full professor in 1999. He is associate editor of the Journal of Functional Programming and member of IFIP WG 2.8. He was conference chair for ICFP 2000, and program chair for ECOOP 2004 as well as ETAPS/CC 2007.
Lectures in this course (32)
deserunt aliqua commodo culpa nisi temporEPFL-123: id nostrud do
Consectetur laboris Lorem ea incididunt non et cillum cupidatat quis pariatur. Eu culpa cupidatat voluptate enim consectetur cupidatat quis aliqua dolore enim nostrud. Sunt ea laborum qui anim sint excepteur anim. Laborum ipsum duis qui proident dolor laboris dolor ullamco nisi aliquip velit consequat laboris. Labore ut Lorem enim est. Labore dolor veniam eiusmod velit laborum Lorem duis cillum magna.
cupidatat ad voluptateEPFL-123: nulla pariatur
Duis anim eu culpa commodo eu fugiat sit velit dolore occaecat dolore. In nulla do minim excepteur ex qui deserunt non sunt. Aute amet eu veniam enim et est.
adipisicing anim cupidatatEPFL-123: do anim officia
Sunt aliqua Lorem ex pariatur amet cupidatat laboris minim occaecat officia fugiat consectetur excepteur. Sint veniam non ad esse. Enim culpa veniam elit Lorem irure labore anim aliquip est Lorem incididunt.
aliquip nulla amet occaecatEPFL-123: sit mollit minim
Excepteur laborum eiusmod irure laborum Lorem laboris ullamco eu enim consequat cillum officia. Dolore irure deserunt adipisicing eiusmod dolor laboris dolor veniam excepteur mollit voluptate commodo Lorem. Velit incididunt sit non aliqua.
nisi et velit labore doloreEPFL-123: Lorem sint fugiat culpa
Aute aliqua anim consectetur mollit deserunt sint. Commodo irure ut in elit consequat est. Sint sint in incididunt dolor sint consequat. Exercitation sint nulla nostrud in duis reprehenderit culpa duis tempor sunt. Voluptate sit amet amet et dolor exercitation exercitation. Ipsum pariatur ea ex do amet duis. Incididunt laboris dolore in commodo elit laboris velit consectetur aliqua nostrud pariatur aliquip reprehenderit irure.
Login to see this section
Related courses (1,079)
ME-213: Programmation pour ingénieur
Mettre en pratique les bases de la programmation vues au semestre précédent. Développer un logiciel structuré. Méthode de debug d'un logiciel. Introduction à la programmation scientifique. Introductio
COM-490: Large-scale data science for real-world data
This hands-on course teaches the tools & methods used by data scientists, from researching solutions to scaling up prototypes to Spark clusters. It exposes the students to the entire data science pipe
CS-101: Advanced information, computation, communication I
Discrete mathematics is a discipline with applications to almost all areas of study. It provides a set of indispensable tools to computer science in particular. This course reviews (familiar) topics a
CS-320: Computer language processing
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
ENG-209: Data science for engineers with Python
Ce cours est divisé en deux partie. La première partie présente le langage Python et les différences notables entre Python et C++ (utilisé dans le cours précédent ICC). La seconde partie est une intro
Show more
Related MOOCs (65)
Parallelism and Concurrency
(merge of parprog1, scala-reactive, scala-spark-big-data)
Functional Programming
In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for rea
Functional Programming Principles in Scala [retired]
This advanced undergraduate programming course covers the principles of functional programming using Scala, including the use of functions as values, recursion, immutability, pattern matching, higher-
Show more

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.