
Graph theory provides essential theoretical and practical foundations for any problem modeling process across various fields. The contribution of graphs to problem-solving lies in their graphical simplicity, their similarity to distributed aspects, and the concepts of traversal and pathfinding.
The objective of this course is to introduce students to a modeling tool that represents solutions in the form of graphs. Additionally, the course will cover a set of techniques enabling students to solve problems using algorithms such as shortest path search, maximum flow, and more.
- Enseignant: MOHAMMED NADJIB KOUAHLA

This module aims to introduce students to the fundamental concepts of
computer networks, providing them with an overview of the principles,
technologies, and protocols that underpin network communication. The goal is to equip them
with the necessary foundations to understand how networks operate, how data is
transmitted, and how different components interact to ensure connectivity and
network services.
- Enseignant: SAID BRAHIMI

This course presents the principles of modeling relational databases and their related query language SQL. Hence, it allows the reader to learn the basic principles and techniques useful for the design, normalization, implementation and exploitation of databases in order to take advantage of the data handled by organizations. In this perspective, the course introduces a set of theoretical and practical knowledge to transform the mass of data collected, during the conduct of the company's business processes, into usable information. Thus, the information mine is materialized by a relational database whose exploitation, either interactively via the SQL language, or by the development of dedicated applications which use procedural languages, helps decision-makers to manage the company's resources and make informed decisions.
Studying this course allows the reader to acquire the following skills:
• Understand the issues related to the diversity of data sources in companies and become aware of the need to integrate them into a single homogeneous structure.
• Be able to analyze existing data sources, extract their content, then apply appropriate modeling techniques in order to handle their correlations and constraints while integrating them into a common database.
• Understand the techniques required for modeling and normalizing databases.
• Exploit the modeled database, both using algebraic language and SQL query language.
• Conduct a project to design a company's information system, focusing on the static aspect expressed through the database schema.
- Enseignant: ALI KHEBIZI
Course Objectives:
By the end of the Introduction to Information Systems course, students should be able to:
- Understand the concept of a system to better utilize it in modeling complex situations.
- Recognize the fundamental role of information and the key analytical tools to ensure better information quality.
- Understand the value of information and its direct link to decision-making in organizations.
- Recognize the systemic approach of organizations, with a focus on their information systems.
- Identify the major phases of the system development lifecycle.
- Enseignant: ZAKARIA ZENDAOUI

Object-Oriented Programming II is an advanced course designed to deepen students' understanding of object-oriented programming principles and their practical application in developing complex Java applications. Building on the foundations established in Object-Oriented Programming I, this course explores advanced topics such as design patterns, exception handling, input/output streams, generics, and reflection. Students will gain hands-on experience with event-driven programming, working with graphical objects and event handlers, and understanding object-oriented databases through persistence and serialization. The course also introduces parallelism and distributed systems, covering multithreading, socket programming and RMI. By the end, students will have the skills to design, implement, and manage sophisticated and real-world object-oriented software solutions.
- Enseignant: ABDELHAKIM HANNOUSSE
Through this unit, the student must know and
master the concepts derived from the theory of languages, specifically
algebraic languages, grammar, and pushdown automata. These are the foundation
of all syntax analysis algorithms (used by programming language compilers).
This module comprises six chapters on language-generating systems (grammars)
and language-recognizing systems (automata). The corresponding automaton for
most languages derived from Chomsky's classification will be described in
detail.
Students are offered a set of exercises for each type of automata (finite state
automata (FSA), pushdown automata (PDA), linear bounded automata (LBA), or
Turing machines (TM)), allowing them to understand its operation thoroughly.
Particular attention will be given to finite states automata used by lexical
analyzers and pushdown automata used by syntax analyzers (two phases of a
compiler).
All the acquired knowledge will be used to thoroughly understand the different phases of implementing compilers for programming languages.
- Enseignant: YACINE LAFIFI