In this course, we will study functional programming, and will learn
how to take advantage of the features of modern typed functional
programming languages. We will study in depth the notions of algebraic
data types, higher-order functions, polymorphism, and
side-effects. The practice sessions will be done in Haskell, but
concepts presented in the course can be applied in many other
languages such as OCaml, SML or Python.

Prerequisites: CSE201 and CSE203




 
 
Prerequisites: CSE201, CSE207
Compilation is the process of transforming high-level programs and abstractions into the binary machine code used in computer processors.  This course introduces the principles and techniques of compilation, with parsers, interpreters, and translators, as well as topics in code optimization and semantic analysis.  Students will build a compiler for a simple programming language.



Compilation is the process of transforming high-level programs and abstractions into the binary machine code used in computer processors.  This course introduces the principles and techniques of compilation, with parsers, interpreters, and translators, as well as topics in code optimization and semantic analysis.  Students will build a compiler for a simple programming language.

 

This course will give to the students the
opportunity to design and implement a
significant CS project.
In that perspective, the students will have
to work in an organized and professional
manner from conception to delivery,
giving them the opportunity to apply all
the knowledge they got from the previous
courses.




This course will give to the students the opportunity to design and implement a significant CS project. In that perspective, the students will have to work in an organized and professional manner from conception to delivery, giving them the opportunity to apply all the knowledge they got from the previous courses.

Prerequisite:CSE203
The course will present the paradigm of
Constraint Logic Programming from
its logical foundations for programming
with relations, to its current applications.
From logic programming and the early
days of artificial intelligence, towards
the holy grail of programming simply by
modelling, the students will learn how to
use a recent dialect of Prolog for relational
databases, knowledge representation,
automated deduction and combinatorial
problem solving. The balance between
declarative programming and efficiency,
between clean semantics and expressiveness
will be of particular interest, and will
lead us into looking at how things work
internally in a Prolog bytecode compiler
(Warren Abstract Machine, indexing…)
on practical examples.




The course will present the paradigm of Constraint Logic Programming from its logical foundations for programming with relations, to its current applications. From logic programming and the early days of artificial intelligence, towards the holy grail of programming simply by modelling, the students will learn how to use a recent dialect of Prolog for relational databases, knowledge representation, automated deduction and combinatorial problem solving. The balance between declarative programming and efficiency, between clean semantics and expressiveness will be of particular interest, and will lead us into looking at how things work internally in a Prolog bytecode compiler (Warren Abstract Machine, indexing, …) on practical examples.

On utilise python pour se familiariser avec la programmation.

http://www.enseignement.polytechnique.fr/informatique/INF361/361X2018.png

Ce cours d'initiation s'adresse à des élèves de première année ayant peu ou pas de connaissances en informatique.

Une première partie aborde les bases de la programmation communes à la majorité des langages. On introduit la programmation objet, un des principaux paradigmes de programmation utilisés à l'heure actuelle. On verra comment cette approche facilite la conception de programmes; tout cela étant développé et implanté en Java.

Dans une deuxième partie, on aborde les différentes manières de représenter des données structurées comme les arbres, les tables associatives ainsi que les algorithmes élémentaires les concernant.

Enfin, une dernière partie présentera certains outils conceptuels qui permettent de modéliser des problèmes concrets et de s'assurer de la correction d'un programme.

Ce cours demande un certain travail personnel indispensable pour l'apprentissage de la programmation.

Langue du cours : Français

Credits ECTS : 5

Table des amphis

  1. Introduction
  2. organisation mémoire
  3. objets (I)
  4. objets (II)
  5. stockage de l'information
  6. cybersécurité
  7. récursivité
  8. listes
  9. arbres
  10. algorithmique du texte

Ce cours présente les mécanismes avancés des langages de programmation, en particulier les traits orientés-objet de Java. Les fonctionnalités du langage sont présentées et utilisées dans des TDs de programmation. Leur fonctionnement est détaillé en montrant comment elles sont traduites, ou compilées, vers une machine abstraite. Cette approche permet également une ouverture vers l'architecture des ordinateurs.

Ce cours s'adresse aux élèves de première année ayant déjà acquis quelques connaissances en informatique avant leur entrée à l'École.

Niveau requis : Une aisance minimale en programmation, impérative ou fonctionnelle, ainsi qu'en algorithmique de base, est requise.

Modalités d'évaluation : Les étudiants sont évalués par un écrit de 2h, en fin de cours avec une modulation par contrôle continu en TDs.

Langue du cours : Français

 

Credits ECTS : 5




This course presents the advanced features of programming languages, and in particular the object-oriented constructs of Java. These features are extensively presented and then used in programming classes. The way they function is detailed by showing how they are transated, or compiled, to an abstract machine. This last point allows also an opening towards computer architecture.

This course is for first year engineering students who already know some programming and basic algorithmics.

The course is graded through a two hours final exam, with some modulation by the work done in the programming classes.