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 optimisation 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 optimisation 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 a organised and professional manner from conception to delivery, giving them the opportunity to apply all the knowledge they got from the previous courses.

 

Theoretical Computer Science has shown that computational problems can be classified according to how difficult they are to solve.  We now know that some problems are intrinsically impossible to solve in a reasonable amount of time, or with a reasonable amount of resources.  This course describes the rigorous model of computation required to compare and classify computational problems and their difficulty, giving an introduction to the theory of computational complexity and the standard complexity classes.
 



Theoretical Computer Science has shown that computational problems can be classified according to how difficult they are to solve.  We now know that some problems are intrinsically impossible to solve in a reasonable amount of time, or with a reasonable amount of resources.  This course describes the rigorous model of computation required to compare and classify computational problems and their difficulty, giving an introduction to the theory of computational complexity and the standard complexity classes.
 
Today's programs and calculations operate not on one computer at a time, but rather on groups of processors or machines working together in concert.  But ensuring efficiency and cooperation among the threads of a program is a deeply subtle, and fascinating, problem.  This course aims to provide the techniques required to master efficient distributed programming, avoiding the many pitfalls that arise when computations share their resources.
 



Today's programs and calculations operate not on one computer at a time, but rather on groups of processors or machines working together in concert.  But ensuring efficiency and cooperation among the threads of a program is a deeply subtle, and fascinating, problem.  This course aims to provide the techniques required to master efficient distributed programming, avoiding the many pitfalls that arise when computations share their resources.
 
This course explores fundamental concepts in 2D and 3D computer graphics, including digital images, 2- and 3-dimensional geometry, curves and surfaces, perspective, ray tracing, filtering and antialiasing, the graphics pipeline, and human visual perception.
 



This course explores fundamental concepts in 2D and 3D computer graphics, including digital images, 2- and 3-dimensional geometry, curves and surfaces, perspective, ray tracing, filtering and antialiasing, the graphics pipeline, and human visual perception.
 

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.