ECTS
8 crédits
Composante
Polytech Grenoble - INP, UGA
Description
Objectifs
Pré-requis recommandés
Période
Semestre 5
Liste des enseignements
Algorithme et programmation impérative / Imperative programming and algorithmics
Programmation orientée objet / Object oriented programming
Algorithme et programmation impérative / Imperative programming and algorithmics
Composante
Polytech Grenoble - INP, UGA
L'objectif du cours est d'introduire les bases de l'algorithmique dans un cadre de programmation impérative. Par delà la présentation des algorithmes, structures de données et méthodologies de programmation classiques, le cours insistera sur les notions d'invariant et de complexité, fondamentales pour le développement d'applications à la fois robustes et performantes. Chaque nouvelle notion sera illustré par de nombreux exemples explicatifs. Les cours sont accompagnés de travaux pratiques de programmation et de travaux dirigés au cours desquels les étudiants apprennent à créer leurs propres algorithmes de manière robuste et performante.
- Notions d'états, d'assertions d'invariants. Illustration sur l'algorithme du tri par insertion
- Introduction à un langage de programmation
- Notions de complexité, illustration sur le tri par insertion
- Programmation par module/paquetage
- Algorithmes basés sur des modèles séquentiels
- Structures de données pour les ensembles dynamiques
- Pointeurs
- Tables de hachage
- Arbres
In this course we introduce the basics of Imperative Programming and Algorithmics.
- Notions of states, assertions and invariants. Illustration with the insertion sort algorithm.
- Introduction to a programming language
- Notion of complexity, illustration with the insertion sort
- Programming with modules/packages
- Sequential models of algorithms
- Data structures for dynamic sets
- Pointers
- Hash tables
- Trees
Programmation orientée objet / Object oriented programming
Composante
Polytech Grenoble - INP, UGA
Ce cours revient sur la programmation impérative et ses concepts pour faire le contraste avec la programmation orientée-objet. Pour cela, nous utilisons le langage de programmation Java qui permet de faire à la fois de la programmation impérative et orientée-objet. Nous abordons les concepts du langage Java mais aussi les techniques et les outils de programmation. Les connaissances et l'expérience pratique acquises seront utiles en développement logiciel au delà du seul langage de programmation Java, quel que soit le langage et les outils utilisés.
Il est organisé en "sprints", avec plusieurs tâches par sprint. Le cours suit une progression en trois phases, guidant l'étudiant vers une meilleure maîtrise du développement logiciel.
1. La première phase est sur la programmation impérative et les outils d'aide à la programmation. Le but est d'établir une fondation commune aux étudiants venant d'horizons divers.
2. La seconde phase est la découverte de la programmation orientée-objet, au travers des concepts cœurs d'objets et de classes. Le focus est sur le graphe d'objets et l'exécution orientée-objet.
3. La troisième phase est l'introduction du polymorphisme et de l'héritage, découvrant la puissance de la programmation orientée-objet et des outils associés.
This course revisits imperative programming in order to contrast it with object-oriented programming. To that end, we use the Java programming language since it is a language that permits both imperative and object-oriented programming. We will discuss the programming concepts of the language but also coding techniques and tools. The skills and know-how acquired will be useful in software development beyond the only Java programming language, regardless of the language and tools used.
It is organized in "sprints", with several tasks per sprint. The course follows a progression in three incremental phases, taking all students on a journey towards mastering software development better.
1. The first phase is about imperative programming and programming tools, setting up a common foundation across students coming from backgrounds.
2. The second phase is about discovering object-oriented programming, understanding the core concepts of objects and classes. The focus is on the object graph and object-oriented execution.
3. The third phase is about introducing polymorphism and inheritance, discovering the power of object-oriented programming and tools.