The goal of CSE201 is to introduce

students to the C++ programming language,

and the object-based view of

software design. C++ is one of the most

widely-used programming languages

in the world, especially for system-level

programming. Much of its power derives

from its use of objects, packets of data

and functionality that model things and

concepts in the real world.

The goal of CSE 201 is to introduce students to the C++ programming language, and the object-based view of software design. C++ is one of the most widely-used programming languages in the world, especially for system-level programming. Much of its power derives from its use of objects, packets of data and functionality that model things and concepts in the real world.

- Teaching coordinator: Mover Sergio
- Teaching coordinator: Omidvar Giti
- Teaching coordinator: Redon Stéphane
- Teaching coordinator: Roda Fabio
- Teaching coordinator: Wassermann Demian
- Teaching coordinator: Will Sebastian

Prerequisite: CSE103

Algorithms are at the heart of all computation.

Building on the algorithms

the introduced in CSE103, this course

provides a solid foundation in modern

algorithmics. Students develop a deeper

knowledge of the fundamental algorithms,

an understanding of how they

work, and an appreciation of how to

implement them efficiently. They also

learn how to reduce other problems related

to these fundamentals.

Algorithms are at the heart of all computation. Building on the algorithms the introduced in CS112, this course provides a solid foundation in modern algorithmics. Students develop a deeper knowledge of the fundamental algorithms, an understanding of how they work, and an appreciation of how to implement them efficiently. They also learn how to reduce other problems related to these fundamentals.

- Teaching coordinator: Fusy Eric
- Teaching coordinator: Pouly Amaury

Logic and Proofs (CSE203) is an introduction

to logic, a science that deals with

the principles of validity of demonstration.

Its goal is to familiarize students

with formal methods for representing

arguments and reasoning about them.

This encompasses propositional calculus,

first-order logic, and deduction systems,

as well as the related technologies (e.g.

automated provers, proof assistants) for

building mechanized proofs. No prior

knowledge in logic is required.

Logic and Proofs (CSE 203) is an introduction to logic, a science that deals with the principles of validity of demonstration. Its goal is to familiarize students with formal methods for representing arguments and reasoning about them. This encompasses propositional calculus, first-order logic, and deduction systems, as well as the related technologies (e.g. automated provers, proof assistants) for building mechanized proofs. No prior knowledge in logic is required

- Teaching coordinator: Strub Pierre-Yves
- Teaching coordinator: Werner Benjamin

Machine learning is an increasingly important area, and it has provided many of the recent advances behind applications of artificial intelligence. It is relevant to a plethora of application domains in science and industry including in finance, health, transport, linguistics, media, and biology.

Lectures will cover the most important concepts and algorithms. We will cover in some degree all the main paradigms of machine learning: supervised learning (regression, classification), unsupervised learning, and reinforcement learning. Among many learning algorithms we will look at:

- least squares regression,
- logistic regression,
- k-nearest neighbors,
- neural networks and deep learning,
- decision tree inducers and ensemble methods,
- principal components analysis,
- k-means clustering
- kernel methods
- Q-learning.

In the labs, we will implement many of these and investigate their use in different applications. Programming will be done in Python with scientific libraries such as numpy and scikit-learn.

The main grading component is a team project, along with two in-class tests.

- Teaching coordinator: Ehrhardt Adrien
- Teaching coordinator: Read Jesse

Prerequisite: CSE201

This course investigates the design and

organization of computers at their lowest

level. This encompasses computer hardware,

and also the operating systems that

provide an interface between most programs

we write and use with the underlying

machine and its network.

This course investigates the design and organization of computers at their lowest level. This encompasses computer hardware, and also the operating systems that provide an interface between most programs we write and use with the underlying machine and its network.

- Teaching coordinator: Bourke Timothy
- Teaching coordinator: Mover Sergio
- Teaching coordinator: Zappa Nardelli Francesco

This course introduces different concepts in automata theory and formal languages, including deterministic and non-deterministic finite automata, regular expressions, context-free grammars, (weak) pushdown automata, and, through the example of a minimalistic programming language, the relation between unconstrained grammars and computability.

This course introduces different concepts in automata theory and formal languages, including formal proofs, deterministic and non-deterministic automata, regular expressions, regular languages, context-free grammars and languages, and Turing machines.

- Teaching coordinator: Guilmant Quentin
- Teaching coordinator: Haucourt Emmanuel
- Teaching coordinator: Mover Sergio

During this course, your teaching staff will be accompanying you in discovering how to conceive, and construct, “networked systems”.

That implies, of course, discovering how the net works (pun intended), what a protocol is, what a system is, and what the different acronyms that you might encounter really means: TCP/IP, SMTP, NAT, NATP, etc. It also implies writing programs which communicate over the Internet — who knows, maybe you will be getting the impulse to starting the next Google or FaceBook during this course?

This course will consist of 2 parallel activities, through which your teaching staff (which you can see to the right) will accompany you:

- Basic lectures, which introduce key technological concepts for conceiving network systems
- Lab Exercises, which will take you "from neophyte" to a competent networker, and which will teach you how to write communicating programs, and have them talk to each other across the Internet.

Lectures and lab exercises will (typically) alternate ; homework will be an ongoing activity for you during the course - and, unsurprisingly, the final exam will be the final activity at the very end of the course.

- Lectures serve to provide an abstract "programmers overview of computer network principles and architectures", and will cover topics such as:
- How does the Net Work?
- Network Programming
- Network Configuration
- Components of a Computer Network
- The Domain Name System
- NAT, NAPT, ...
- ...
- Lab Exercise Sessionsserves to give you practical experiences in computer networking - in particular, but not exclusively, in how to write programs that communicate over the network. Each lab exercise session will happen in a computer room, and will be structured as follows:
- Quizzes are (graded) events, during the first 15 min of each lab exercise session, and will cover the material covered in lectures(s) since the previous lab exercise session. These quizzes serve to give you both a motivation for revising the material from previous lectures, as well as to allow you to gauge your level of understanding well in advance of the final exam.
- Hands-on networking, which will have you either work on a tutorial, or an assignment.
- Tutorials serve to help you acquire a certain set of skills, in a very guided step-by-step fashion. This may be, for example, how to write a program that communicates over the network, or how to set up a small computer network.
- Assignments are (graded) more independent and less guided activities, where you will be told what the end-result of your work should be, but not be given a step-by-step tutorial to follow. While you will be working independently, of course your teachers will be present to help you in your design, and implementation, of a communicating system. Assignments will be graded.
- Homework is what you do between lab exercise sessions - and what we expect you to do is to study the material from the lectures and to finish the assignments, that have been given as part of the lab exercise sessions. This serves to ensure that you get a chance to encounter all possible "difficulties" in a setting, where you will have a chance to (at the next lab exercise session) discuss them with your teachers, and resolve them with their help, before handing in your assignment for grading.
- The Final Examis, in part, a way to evaluate what you have retained from the course, and to give you a final grade. However more significantly, it is also there to aid your revising of the course material, and thus to reinforce your learning process. The final exam will be a multiple-choice questionnaire, and will - in a nutshell - be a longer version of the quizzes that you have seen during the lab exercise sessions. Thus, if you've prepared continuously for the weekly quizzes, if you've done well in those, and you review the course material diligently, then you should be well prepared also for the final exam.

__Evaluation:__

Your final grade for this course will be made up from three components:

- Final exam (50% of your final grade)
- 20 multiple-choice questionnaire "on computer"
- Covering the entire course syllabus
- Graded /20
- Weekly quizzes (25% of your final grade)
- Max 15 min (timed) at the very start of each lab exercise session
- On the subjects treated in the lectures since the last lab exercise session.
- Combined grade /20
- Graded Assignments (25% of your final grade)
- Homework == Extended versions of your work done during the lab exercise sessions
- For each assignment, you will demonstrate your code to a teacher + submit
- Combined grade /20

__Language:__

English

During this course, your teaching staff will be accompanying you in discovering how to conceive, and construct, “networked systems”.

That implies, of course, discovering how the net works (pun intended), what a protocol is, what a system is, and what the different acronyms that you might encounter really means: TCP/IP, SMTP, NAT, NATP, etc. It also implies writing programs which communicate over the Internet — who knows, maybe you will be getting the impulse to starting the next Google or FaceBook during this course?

This course will consist of 2 parallel activities, through which your teaching staff (which you can see to the right) will accompany you:

- Basic lectures, which introduce key technological concepts for conceiving network systems
- Lab Exercises, which will take you "from neophyte" to a competent networker, and which will teach you how to write communicating programs, and have them talk to each other across the Internet.

Lectures and lab exercises will (typically) alternate ; homework will be an ongoing activity for you during the course - and, unsurprisingly, the final exam will be the final activity at the very end of the course.

- Lectures serve to provide an abstract "programmers overview of computer network principles and architectures", and will cover topics such as:
- How does the Net Work?
- Network Programming
- Network Configuration
- Components of a Computer Network
- The Domain Name System
- NAT, NAPT, ...
- ...
- Lab Exercise Sessionsserves to give you practical experiences in computer networking - in particular, but not exclusively, in how to write programs that communicate over the network. Each lab exercise session will happen in a computer room, and will be structured as follows:
- Quizzes are (graded) events, during the first 15 min of each lab exercise session, and will cover the material covered in lectures(s) since the previous lab exercise session. These quizzes serve to give you both a motivation for revising the material from previous lectures, as well as to allow you to gauge your level of understanding well in advance of the final exam.
- Hands-on networking, which will have you either work on a tutorial, or an assignment.
- Tutorials serve to help you acquire a certain set of skills, in a very guided step-by-step fashion. This may be, for example, how to write a program that communicates over the network, or how to set up a small computer network.
- Assignments are (graded) more independent and less guided activities, where you will be told what the end-result of your work should be, but not be given a step-by-step tutorial to follow. While you will be working independently, of course your teachers will be present to help you in your design, and implementation, of a communicating system. Assignments will be graded.
- Homework is what you do between lab exercise sessions - and what we expect you to do is to study the material from the lectures and to finish the assignments, that have been given as part of the lab exercise sessions. This serves to ensure that you get a chance to encounter all possible "difficulties" in a setting, where you will have a chance to (at the next lab exercise session) discuss them with your teachers, and resolve them with their help, before handing in your assignment for grading.
- The Final Examis, in part, a way to evaluate what you have retained from the course, and to give you a final grade. However more significantly, it is also there to aid your revising of the course material, and thus to reinforce your learning process. The final exam will be a multiple-choice questionnaire, and will - in a nutshell - be a longer version of the quizzes that you have seen during the lab exercise sessions. Thus, if you've prepared continuously for the weekly quizzes, if you've done well in those, and you review the course material diligently, then you should be well prepared also for the final exam.

__Evaluation:__

Your final grade for this course will be made up from three components:

- Final exam (50% of your final grade)
- 20 multiple-choice questionnaire "on computer"
- Covering the entire course syllabus
- Graded /20
- Weekly quizzes (25% of your final grade)
- Max 15 min (timed) at the very start of each lab exercise session
- On the subjects treated in the lectures since the last lab exercise session.
- Combined grade /20
- Graded Assignments (25% of your final grade)
- Homework == Extended versions of your work done during the lab exercise sessions
- For each assignment, you will demonstrate your code to a teacher + submit
- Combined grade /20

__Language:__

English

- Teaching coordinator: Clausen Thomas
- Teaching coordinator: Cordero-Fuertes Juan-Antonio