Computer programming (CSE101) introduces students (with or without previous programming experience) to the fundamentals of computer programming in Python, with applications across the sciences. In this course, students will explore fundamental algorithms and data structures, up to and including binary trees, using a mixture of procedural, recursive, and object-oriented techniques. Upon completion of this course, students will have a solid foundation in the culture and practice of modern programming, and the basic skills to solve real-world problems using efficient, well-written programs and open-source tools. These foundations will be extended and completed in CSE 102 and CSE 103.

Computer programming (CSE101) introduces students (with or without previous programming experience) to the fundamentals of computer programming in Python, with applications across the sciences. In this course, students will explore fundamental algorithms and data structures, up to and including binary trees, using a mixture of procedural, recursive, and object-oriented techniques. Upon completion of this course, students will have a solid foundation in the culture and practice of modern programming, and the basic skills to solve real-world problems using efficient, well-written programs and open-source tools. These foundations will be extended and completed in CSE102 and CSE103.

- Teaching coordinator: Aubrun Nathalie
- Teaching coordinator: Blazy Olivier
- Teaching coordinator: Boury Théo
- Teaching coordinator: Bychkov Andrey
- Teaching coordinator: Le Devehat Anaëlle
- Teaching coordinator: Pogudin Gleb
- Teaching coordinator: Smith Benjamin
- Teaching coordinator: Wu Jui-Hsuan
- Teaching coordinator: Zadem Mehdi
- Teaching coordinator: Zhioua Sami

Advanced Programming (CSE102) is the continuation of the previous semester’s course (CSE101). We will continue to lay the foundations of modern computer science, while developing more sophisticated programming techniques in Python. At the end of this course, students will have the fundamental analytical and programming skills to solve everyday problems in the sciences more efficiently and effectively. They will also be prepared to continue learning other programming languages and paradigms, and the theoretical foundations of computer science itself.

Advanced Programming (CSE102) is the continuation of the previous semester’s course (CSE101). We will continue to lay the foundations of modern computer science, while developing more sophisticated programming techniques in Python. At the end of this course, students will have the fundamental analytical and programming skills to solve everyday problems in the sciences more efficiently and effectively. They will also be prepared to continue learning other programming languages and paradigms, and the theoretical foundations of computer science itself.

- Teaching coordinator: Albenque Marie
- Teaching coordinator: Athanasiou Andréas
- Teaching coordinator: Bender Matias
- Teaching coordinator: Hadgi Souhail
- Teaching coordinator: Loisel Pierre
- Teaching coordinator: Mukhina Yulia
- Teaching coordinator: Will Sebastian
- Teaching coordinator: Zeilberger Noam
- Teaching coordinator: Zeong Gangsoo
- Teaching coordinator: Zhioua Sami

An algorithm is a sequence of instructions that allows us to solve a problem using a finite number of steps. As such, algorithms are the procedures that we use to “compute”. We study algorithms to know what can actually be computed, in theory and in practice, and to find out how efficiently it can be done.

Introduction to Algorithms (CSE103) is an initiation into the art and science of algorithms. This course will train students in how to think about algorithms, how to solve a wide range of problems by means of a number of algorithmic techniques, how to rigorously compare different algorithms and predict their performance, and how it is possible to formally prove that a program implementing an algorithm is correct.

An algorithm is a sequence of instructions that allows us to solve a problem using a finite number of steps. As such, algorithms are the procedures that we use to “compute”. We study algorithms to know what can actually be computed, in theory and in practice, and to find out how efficiently it can be done.

Introduction to Algorithms (CSE103) is an initiation into the art and science of algorithms. This course will train students in how to think about algorithms, how to solve a wide range of problems by means of a number of algorithmic techniques, how to rigorously compare different algorithms and predict their performance, and how it is possible to formally prove that a program implementing an algorithm is correct.

- Teaching coordinator: Berkemer Sarah
- Teaching coordinator: Bychkov Andrey
- Teaching coordinator: Chiche Nathan
- Teaching coordinator: Lafont Ambroise
- Teaching coordinator: Mazza Damiano
- Teaching coordinator: Zhang Kun

**Web Programming**, (CSE 104) introduces the languages, tools, and techniques specific to developing **web-based applications**. Students will develop a solid understanding of the intricacies of contemporary, dynamic website development, and an insight into the internal workings of the web itself. This is a hands-on practical course that provides students with valuable practice developing their own web-based applications.

#### Topics

- HTML5, CSS3
- JavaScript (front end)
- Introduction to server side programming: PHP, JS (nodeJS), DB

#### General organization

The class will mainly consist of practical computer lab classes A small project will be conducted where students will develop their own website (client side only) following the current good practices.

**Web Programming**, (CSE 104) introduces the languages, tools, and techniques specific to developing **web-based applications**. Students will develop a solid understanding of the intricacies of contemporary, dynamic website development, and an insight into the internal workings of the web itself. This is a hands-on practical course that provides students with valuable practice developing their own web-based applications.

#### Topics

- HTML5, CSS3
- JavaScript (front end)
- Introduction to server side programming: PHP, JS (nodeJS), DB

#### General organization

The class will mainly consist of practical computer lab classes A small project will be conducted where students will develop their own website (client side only) following the current good practices.

- Teaching coordinator: Albenque Marie
- Teaching coordinator: Blazy Olivier
- Teaching coordinator: Butler Tara
- Teaching coordinator: Pietriga Emmanuel
- Teaching coordinator: Rohmer Damien