- Teacher: BOUGHIDA ADIL
This module introduces the main concepts of dynamic and linear programming (theoretical and algorithmic), with an emphasis on application-oriented problems and solution methods (graphical, simplex, etc.). The objective is to train students to model combinatorial problems and to select the most appropriate algorithm.
- Teacher: ZOHRA MEHENNAOUI
The course aims to enable the understanding and practice of numerical analysis methods. The course focuses on understanding mathematical theorems, numerical methods and algorithms that help to model certain problems currently encountered in many fields. At the end of the course, the student should be able to design and model scientific problems and implement complex methods from basic operations.
- Teacher: SALAH DERDAR
The purpose of this module is to introduce the fundamental principles underlying compiler development, enabling students to grasp the principles of programming languages thoroughly. Indeed, it is essential to understand how compilers work in order to program efficiently and design languages tailored to specific applications.
The compilation process is often associated with and restricted to programming languages (procedural, object-oriented), but it can be generalized to a multitude of languages, such as logical, functional, and formal languages.
The concepts covered in this module concern:
- The basic principles inherent in compiler creation are scanning, parsing, semantic analysis, and code generation.
- The fundamental tools used to carry out these analyses are the basic foundations of language theory (grammars, automata, etc.).
At the end of this module, the students can understand how a compiler is developed, which allows them to better understand the "constraints" imposed by different languages when writing a program in a high-level language.
Practical work aims to create a micro-compiler, in two versions of increasing complexity (scanning and parsing).
- Teacher: YACINE LAFIFI

Dans ce cours, les principes de base des différents éléments de l’intelligence artificielle seront présentés : Logiques et Raisonnement, Résolution de problèmes, Méta heuristiques, Problème de satisfaction de contraintes, Apprentissage automatique et réseaux de neurones, Systèmes multi-agents.
This course will introduce the basic principles of the various elements of artificial intelligence: Logic and Reasoning, Problem Solving, Meta-heuristics, Constraint Satisfaction Problems, Machine Learning and Neural Networks, Multi-agent Systems.
- Teacher: YAMINA BORDJIBA

- This course introduces students to the fundamental principles, methods, and tools used in software development and maintenance. It aims to provide a structured approach to the design, implementation, testing, and management of software systems that meet real-world needs in terms of functionality, quality, and performance.
- Students will learn about the software development life cycle (SDLC), requirements engineering, system modeling using UML, software design patterns, project management, and quality assurance techniques. Emphasis is placed on applying engineering principles to ensure that software is reliable, maintainable, and scalable.
- Through lectures, teamwork, and hands-on projects, students will gain practical experience with modern software engineering tools and collaborative development environments. The course also highlights professional practices, documentation, and ethics in software engineering.
- Teacher: LYNDA DJAKDJAKHA

This module provides students with an in-depth understanding of the relational data storage level. It introduces the principles of integrity constraints (definition and representation using formal languages), data organization and access structures, metadata management, the mechanism of database views, and access control techniques.
Prerequisites
Students are expected to have prior knowledge of general database concepts, including modeling and query languages.
- Teacher: ADEL BENAMIRA