
Curriculum - Computer Science
Ce cours permet de comprendre les principes de base du
calcul. Il introduit les principales propriétés des droites
réelles. Il étudie les limites et la convergence des suites
numériques et des fonctions algébriques et transcendantes,
leurs limites, leur continuité et leurs dérivées. Il inclut
les théorèmes fondamentaux du calcul et étudie les équations
différentielles du premier et du
This course provides an understanding of the basic logic,
set theory basics, relations and their applications in
computer science, groups, and their main properties,
arithmetic in Z set, polynomials, and rational fractions.
This course explores electrical quantities such as voltage,
electric current, resistance, power, energy, and their
measurement in electrical circuits using Kirchhoff's laws:
Ohm's law, mesh law, and knot law. It also covers circuit
analysis theorems, including the superposition theorem, and
Millman's and Thevenin's models, applied to both passive and
active dipoles.
This course covers fundamental concepts in electrostatics
and electromagnetism. Key topics include Coulomb's law,
charge distribution, electrostatic fields and potentials,
energy of charge systems, balanced conductors, and
capacitors. In electromagnetism, the course explores
magnetic field properties, Ampere's theorem, Faraday's law,
and Lenz's law.
This course introduces basic concepts in algorithmics,
including defining computer problems, and the role and
structure of algorithms. It covers operations and types,
such as arithmetic operations, reading and writing, and type
presentation. The course also includes control structures
(conditional, repetitive, and selective), arrays (structure,
declaration, search, and sorting algorithms), and functions.
This course covers the basic concepts of computer science,
including the components and hardware architecture of
computers, languages (binary, assembly, and high-level),
basic software (operating systems) and MS-DOS commands,
application software, as well as the relationships between
these components.
This course covers the use of adjectives, adverbs,
normalization, the use of stative verbs and action verbs in
a structured sentence, and punctuation.
This course provides a comprehensive overview of vocabulary
and grammar rules. It emphasizes reading, listening, as well
as both oral and written expression in English.
This course provides an introduction to scientific
philosophy, focusing on the evolution of science according
to the approaches of Karl Popper and Thomas Kuhn. It also
introduces mathematics and physics in a historical context,
based on the epistemological approaches of the Greeks,
Popper, and Bachelard. It presents the history of
computing, from programming to artificial intelligence.
This course provides an introduction to scientific
philosophy, focusing on the evolution of science according
to the approaches of Karl Popper and Thomas Kuhn. It also
introduces mathematics and physics in a historical context,
based on the epistemological approaches of the Greeks,
Popper, and Bachelard. It presents the history of
computing, from programming to artificial intelligence.
This course provides an understanding of Taylor's expansion
of numerical functions. Introduces the main properties of
Riemann's integrals. Studies limits, properties, and the
convergence of improper integrals. It includes the study of
functions of several real variables, their limits,
continuity, and differentiability.
This course introduces vector space and subspace, the use of
matrix techniques to solve linear systems, the properties of
a finite family of vectors (independence, spanning sets, and
bases), dimension calculation, and natural transformations
(homomorphisms) between finite-dimensional vector spaces.
This course provides the temporal and complex representation
needed to calculate the parameters of AC electrical
circuits, including current, voltage, and power. It covers
the study of electrical sources and energy transportation
components.
The objective of this course is to master the basic concepts
of light, including its dual nature as both a wave and a
particle, the laws of refraction and reflection, and their
applications in fiber optics, as well as the wave behavior
of light, including interference and diffraction.
This course introduces the concepts of compound types
(arrays, structures, array sorting), pointers (pointer
operations, memory allocation, pointers and arrays,
structures and pointers, double pointers), functions
(prototyping, passing parameters by value and by address,
program decomposition), structures, files, and modular
programming.
This course introduces the concepts of information
representation (numerical systems, arithmetic operations,
representation of signed numbers, character code),
combinatorial logic (basic logic functions, representation
of logical functions, simplification of logic functions,
combinatorial logic circuits), and sequential logic
(flip-flops, recorders, counters).
This course explains rational, emotional, and compelling
arguments, techniques of concession and refutation, and the
expression of logical relations.
This course focuses on the comprehension of various
materials, including articles, reports, news, technical
materials, and data sheets. It provides training in reading
and listening, and exercises on grammar principles. The
course also includes vocabulary building, acquisition and
practice of idiomatic language, and techniques for creative
and professional writing practice.
This course helps students understand the impact of digital
technology on modern society, identify key applications of
digital data, and assess the advantages and disadvantages of
digital technology in daily life.
This course provides an understanding of the reduction of
endomorphisms. Generalize the traditional geometry.
Introduces the notion of the scalar product, norms, and
distances. It includes the study of the orthogonality of the
quadratic forms and the Euclidian spaces.
This course introduces the machine representation of numbers
and explains the principles of linear algebra. It covers
numerical methods for solving linear and non-linear
equations, and presents Lagrangian interpolation along with
numerical integration techniques.
This course provides a comprehensive study of
electromagnetic wave propagation, focusing on Maxwell's
equations and their practical applications. It extensively
covers transmission lines, including their modeling,
propagation characteristics, impedance matching, and
reflection analysis.
This course presents the diode and transistor operation and
characteristics necessary for the analog functions design.
Introduces bipolar transistor polarization in linear mode
and in commutation. Studies operational amplifier in linear
and non-linear mode. Analyzes and sizes harmonic and
relaxation oscillators.
This course aims to explain the logical foundations of
computer systems and how they operate. It analyzes the
characteristics of computer architectures and introduces
programming based on assembly language.
This course aims to explain algorithm complexity for
designing efficient algorithms and to master modular
programming concepts and file manipulation in C. It also
covers the difference between static and dynamic memory
allocation.
This course covers the fundamental components of the
Internet. It introduces standard diagnostic tools, network
application development, and typical network designs and
configurations.
This course focuses on the comprehension of various
materials, including articles, reports, news, technical
materials, and data sheets. It provides training in reading
and listening, and exercises on grammar principles. The
course also includes vocabulary building, acquisition and
practice of idiomatic language, and techniques for creative
and professional writing practice.
This course covers several themes: the enterprise and its
micro-economic environment, an introduction to human
resources management, and management tools and methods. This
course covers current business, accounting, and financial
issues faced by enterprises and markets in Morocco. It also
addresses the major trends that characterize the Moroccan
economy.
This course introduces the concept of accountability and
its importance in professional settings. It explores
various forms of accountability, such as civic, moral,
civil, and penal. It explains the responsibilities of
employees, managers, and companies, as well as the
importance of adopting responsible professional behavior.
This course aims to master the calculation of double and
triple integrals, as well as their applications to
calculate areas and volumes. The course also deals with
the continuity and the differentiability of the integrals
of a parameter. The last part is devoted to the
convergence criteria for the numerical series, as well as
the series of functions.
This course introduces probability and statistics theory.
It focuses on probability space, conditional probability,
and independence (Bayes). It introduces the notions of
random variable, expectation, variance, generating
function, and examples of usual laws (uniform, Bernoulli,
binomial, geometric, Poisson, Normal, Exponential). It
tackles inferential statistics, namely, confidence
interval and hypothesis.
This course is divided into two parts. The first part is
dedicated to the processing and analysis of signals
(sampling, quantization, conversion, and the Z-transform),
and the second part is devoted to studying the performance
of continuous linear systems using frequency and time
domain analysis.
This course presents the main technologies of logic
circuits. Provides an understanding of the basic
principle and the characteristics of memories.
Introduces the architecture and use of programmable
components. Studies the functioning of microprocessor
and microcontroller
The course explains the basics of HTML, CSS, and
JavaScript for developing web pages.
This course covers the fundamentals of relational
algebra and relational databases. It provides a
practical introduction to SQL commands, functions, and
operators used for storing, retrieving, updating, and
displaying data in relational databases. Additionally,
it includes an introduction to PHP programming
constructs for interacting with relational databases.
The course will cover an introduction to the internal
operation of modern operating systems. In particular,
the course will cover processes, CPU scheduling, memory
management, file systems and shell programming.
This course focuses on deepening certain grammatical,
lexical, and syntactic concepts, as well as assimilating
more complex idiomatic expressions.
This course essentially covers several main themes: the
enterprise and its micro-economic environment, an
introduction to human resources management, management
tools and methods. This course covers current business,
accounting, and financial issues faced by enterprises
and markets in Morocco. It also addresses the major
trends that characterize the Moroccan economy.
This course aims to provide knowledge of laws and
regulations related to health and safety at work. It
raises awareness of workplace health and safety aspects
specific to the profession.
This course introduces the concepts of database
management and programming. It builds on the
introductory course in databases and includes advanced
techniques for storing, retrieving, updating, and
displaying data using SQL. Topics covered include
functional dependency and normalization, PL/SQL,
triggers, views, object-relational modeling, query
optimization, storage organization and indexing,
transaction processing concepts, and access control.
This course introduces the fundamentals of computer
networks, including the evolution of computer networks,
network topologies and architecture, and network
components and devices. It covers network protocols and
communications, network addressing and routing, and data
link protocols.
This course delves into the complex and vital elements
of modern computer networks, covering network design,
implementation, management, and optimization, with a
primary emphasis on routing and switching
technologies.
INF-3152C Object Oriented
Programming JAVA & GUI 2
44
This course provides a
basic understanding of object-oriented programming
using the Java language and introduces GUI
programming.
This course provides an introduction to
object-oriented modeling, covering topics such as the
importance of modeling, the basics of UML, and
modeling static and dynamic views of a computer
system.
This course covers the fundamentals of Python
language, by presenting the basic Python script (data
types and variables), managing conditions and using
loops, and manipulating functions and files.
This course introduces advanced data structures and
their basic algorithms, including binary search trees,
binary heaps, priority queues, and graphs.
This course covers the basic concepts and techniques
of data analysis from both theoretical and practical
perspectives. All topics are accompanied by hands-on
exercises with implementations of data analysis
algorithms using R
programming language.
This course provides an understanding of modeling by
using mathematical programs. Introduces the main
properties of linear programming. Studies integer
programming and its solving algorithms (Branch and
bound and cutting plane). It includes applications
specific to transportation and logistics.
The course provides an overview of cyber-security
aspects confidentiality integrity availability and
traceability to highlight cryptography, network
security, software security, and malware defenses.
The course gives an understanding of each of these
topics while discussing the main strengths and
weaknesses of each technology.
This course covers theoretical knowledge and
practical skills for developing managerial decisions
based on the application of various methods in a
business environment, including the economics study
and managerial decision-making process; analysis of
the situations requiring decisions; and Study of
simple and complex decision-making methods.
This course aims to present an overview of the
design thinking involved at each stage of the design
process of an IT project: the methods used to
generate and refine creative ideas, the key
considerations that help shape them, and the
elements of feedback and revision that allow design
teams to learn from each piece of work and
contribute to future innovations. The course
proposes design tools relating to the immersion and
empathy phase as well as the analysis phase of the
design thinking process
The course aims to sharpen students' critical
reading skills to better understand and analyze
complex written texts on various subjects related to
science, business, and academic discussions.
This course focuses on mobile development, covering
the Android platform architecture and best practices
for developing and deploying native applications
using Android Studio. It focuses on UI design,
activity lifecycle, data storage, and optimization.
This course aims to introduce best practices for
developing dynamic web pages using the PHP
programming language and Laravel framework.
This course provides an in-depth study of system
programming concepts, including process management,
memory management, file systems, and input/output
management. Topics include process synchronization
and communication, deadlocks, memory hierarchy,
virtual memory, and file system implementation.
Emphasis will be placed on proficiency in low-level
languages like C, understanding their role in
system-level programming, and applying this
knowledge to design efficient, reliable, and secure
software that interacts closely with hardware
components.
The Network Administration course offers a
comprehensive exploration of the principles and
practices necessary for managing and maintaining
computer networks. The focus is on configuring,
managing, and troubleshooting network devices, such
as routers and switches, implementing network
security measures, and ensuring smooth network
operation.
This course explores advanced concepts of Business
Intelligence (BI) and Data Warehousing in
information systems and decision-making processes.
It covers how operational data is used to create
data warehouses in the era of big data, applying
data mining tools and analytics for insights. Topics
include BI strategy, analysis, design, and
implementation of BI systems, types of reporting and
analytics, enterprise data warehousing, data
management systems, decision support systems,
knowledge management systems, big data, and
data/text mining. Case studies examine application
software, web tools, success, limitations, and
technical/social issues in BI.
This course provides an introduction to formal
languages and automata theory, covering fundamental
concepts such as finite automata, deterministic and
non-deterministic finite automata, and regular
expressions. It explores the equivalence of
different automata models, including those with
epsilon transitions, as well as Moore and Mealy
machines. The course emphasizes the theoretical
foundations necessary for understanding language
recognition and the basics of compiler design.
This course focuses primarily on exact solution
methods (for dynamic programming, transportation,
assignment, etc.) as well as approximate methods
such as tabu search or genetic algorithms. Analysis
techniques and software packages will be used to
solve the problems faced by business leaders in
decision-making environments.
This course focuses primarily on the development of
software applications, from functional and technical
design phases to system implementation. Some
software application proposals will be provided by
the instructors.
This course focuses on helping engineering students
make better decisions and solve problems in
operations by teaching them economic analysis
principles and methods. It aims to assist students
in choosing the most economically viable options
from various possibilities, aligning closely with
microeconomics.
This course aims to raise students' awareness of
legal issues related to computer science. The module
consists of: an introduction to the legal system,
the Data Protection Act, legal protection of
software, and intellectual property.
This element follows design thinking; it will enable
students to practice empathy by applying a
human-centered approach to design techniques, such
as user research, user experience, prototyping, and
journey mapping; evaluate group dynamics and improve
team performance through tools and processes
designed to enhance collaboration and iteration in
development; guide teams to leverage a wide range of
experiences and professional backgrounds and create
a stronger collaborative dynamic to reinforce their
approach to innovation.
The objective of this course is to develop the
skills necessary for the TOEFL or TOEIC exam.
This course is designed to deepen the principles and
advanced concepts of web development based on JEE
technology. It is structured in two parts: the first
part focuses on best practices for creating web
applications using basic JEE technologies, including
applications with server-side page generation and
rich applications with dynamic page management.
Model/View/Controller will be explored in the
context of dynamic web applications, particularly in
the Java/J2EE world based on Servlets and JSP/JSTL.
The second part covers mastering the basic
frameworks of JEE technology for structuring the
application using the Struts Framework and
automating data persistence and relational object
mapping based on the Hibernate Framework.
This course aims to study the algorithmic techniques
and basic principles of distributed algorithms. The
module deals with problems raised by distributed
systems and their applications (mutual exclusion,
distributed election, spanning tree, distributed
data management, data transfer protocols, etc.).
This course aims to introduce the methods for
designing high-quality software applications that
are responsive, scalable, reliable, maintainable,
and secure. It will involve studying and mastering
software patterns, focusing on user interface
design, and evaluating software quality.
This course aims to establish the technical
foundation of structured models, enabling mastery of
tools essential for best practices in software
development. It reinforces learning on UML, Java,
databases, and project management. The goal is to
apply the required methods and technologies in
object-oriented development, inspired by the
principles of contract-based specification and
programming.
This course allows students to have an in-depth
understanding of Internet of Things (IoT)
applications. The course will cover all the
components of an IoT application from the devices to
the Cloud, passing by gateways, edge devices,
middlewares, … The students will apply their
knowledge in a project by designing a full IoT
application using real hardware (Arduino and
Raspberry Pis).
This module mainly focuses on developing software
applications from functional and technical design
phases to the implementation of the system. Some
proposals of IT application will be proposed by
instructors. Students will have access to two rooms
equipped with computer equipment.
The objective of this course is to develop the
skills necessary for the TOEFL exam.
This course provides an in-depth exploration of the
mathematical underpinnings of machine learning.
Students will engage with core topics such as linear
algebra, vector calculus, probability, statistics,
and optimization, fostering a rigorous understanding
essential for advanced study and application in the
field.
This course introduces students to the fundamental
concepts of NoSQL databases, including their
creation, manipulation, and query mechanisms. It
provides comprehensive coverage of the four primary
types of NoSQL databases: document, KeyValue,
column, and graph-oriented databases.
This course is structured in two parts: the first
part focuses on best practices for creating web
applications using basic JEE technologies, including
applications with server-side page generation and
rich applications with dynamic page management.
Model/View/Controller will be explored in the
context of dynamic web applications, particularly in
the Java/J2EE world based on Servlets and JSP/JSTL.
The second part covers mastering the basic
frameworks of JEE technology for structuring the
application using the Struts Framework and
automating data persistence and relational object
mapping based on the Hibernate Framework.
This course gives students an overview of the field
of Cloud Computing and Virtualization, its enabling
technologies, main building blocks, and hands-on
experience through projects utilizing public cloud
infrastructures (Microsoft Azure) as well as
hypervisors.
This course covers principles and practices for
securing relational database management systems
(RDBMS) and their data. Key topics include access
control, encryption, authentication, auditing, and
security policies for both on-premises and cloud
environments. Through hands-on labs and case
studies, practical skills in designing and managing
database security solutions are developed.
The integrated project aims to deepen knowledge by
managing a computer project and solving a given
problem. This module allows work on issues related
to the semester topics. Instructors will propose
projects that combine designing and implementing
data-driven IT solutions. Various projects will be
offered, such as analyzing sentiments on social
networks.
The objectives of this course are to give students
an overview of project management methodologies, to
learn how to properly plan a software project using
the Agile principles of flexibility and reactivity,
to practice with planification tools such as MS
project and Primavera, to work on the implementation
of measurements process, and to monitor, report and
control a software project.
The objective of this course is to develop the
skills necessary for the TOEFL exam.
This course gives students an overview of the field
of Cloud Computing and Virtualization, its enabling
technologies, main building blocks, and hands-on
experience through projects utilizing public cloud
infrastructures (Microsoft Azure) as well as
hypervisors.
This course provides an in-depth understanding of
Internet of Things (IoT) applications. The course
will cover all the components of an IoT application
from the devices to the Cloud, passing by gateways,
edge devices, middlewares, … The students will apply
their knowledge in a project by designing a full IoT
application using real hardware (Arduino and
Raspberry Pis).
This course covers the principles and practices of
Software-Defined Networking (SDN) and Network
Softwarization. Students will learn the fundamental
concepts of SDN and network softwarization,
including the OpenFlow protocol, SDN controllers,
and network virtualization. The course will also
cover the application of SDN and network
softwarization in real-world scenarios, such as data
center networks and cloud computing.
This module aims to introduce parallel programming
and parallel architectures together with algorithmic
techniques and principles for designing/developing
parallel algorithms.
This course introduces students to the fundamental
concepts of NoSQL databases, including their
creation, manipulation, and query mechanisms. It
provides comprehensive coverage of the four primary
types of NoSQL databases: document, KeyValue,
column, and graph-oriented databases.
In this integrated project course, students will
apply the skills they have learned in the program.
They will work in teams and be tasked with creating
the functional and technical design of a scalable
e-commerce web application before actually building
it.
The objectives of this course are to give students
an overview of project management methodologies, to
learn how to properly plan a software project using
the Agile principles of flexibility and reactivity,
to practice with planification tools such as MS
project and Primavera, to work on the implementation
of measurements process, and to monitor, report and
control a software project.
The objective of this course is to develop the
skills necessary for the TOEFL exam.
This course provides students with an overview of
Cloud Computing and Virtualization, including its
technologies, main building blocks, and hands-on
experience through projects utilizing public cloud
infrastructures (Microsoft Azure) as well as
hypervisors.
This module aims to introduce parallel programming
and parallel architectures together with algorithmic
techniques and principles for designing/developing
parallel algorithms.
This course offers a detailed study of security
vulnerabilities in low-level programming languages
like C/C++ and Assembly. It covers topics such as
buffer overflows, stack overflows, heap overflows,
and other memory-related vulnerabilities. The
course will also delve into secure programming best
practices, including coding standards and design
principles, to ensure that security is incorporated
into the design phase.
The course introduces the students to the principles
of basic communication theory; Basic coding theory;
Analog and digital communications; Digital
communication links Communication systems and
wireless systems, radio propagation issues, channel
coding, spread spectrum, and multiple access
techniques. Standards such as IS-54, AMPS, D-AMPS,
GSM, IS-95, GPRS, and UMTS are presented.
This course covers the principles and practices of
Software-Defined Networking (SDN) and Network
Softwarization. Students will learn the fundamental
concepts of SDN and network softwarization,
including the OpenFlow protocol, SDN controllers,
and network virtualization. The course will also
cover the application of SDN and network
softwarization in real-world scenarios, such as data
center networks and cloud computing.
In this integrated project course, students will
have the opportunity to apply the skills they have
learned in the program. This module allows work on
issues related to all semester topics.
The student must demonstrate their academic and
technical skills by applying the techniques learned
in various modules of network security, operating
systems, and applications. This module involves
group work and will focus on analyzing, designing,
and implementing security solutions for information
systems.
The objective of this course is to develop the
skills necessary for the TOEFL exam.
This course aims to introduce the important aspects
of software architecture. High-level building blocks
of software will be tackled, taking into
consideration software architecture fundamentals,
description, and best practices for an effective
design. Moreover, various technologies and
frameworks such as Spring/JEE, parallel/network
programming, and middleware bus services will be put
into practice to deploy the designed architectures.
This module first provides students with a
theoretical understanding and background of
blockchain’s features, and then highlights, via
practical and hands-on labs, its technical
capabilities in developing decentralized software
applications in several domains (e.g., require
sharing confidential data).
This course introduces contemporary methodologies,
techniques, and tools for software requirements and
quality assurance.
This course aims to present formal techniques and
their use in the development of safety-critical
programs. This concerns in particular the principles
of formal methods and how to use mathematics (e.g.,
logic and set theory) to design and, if possible,
build computer programs, as well as the techniques
for validating and verifying safety and liveness.
The purpose of this module is to learn Big Data
technologies for application development using a
wide ecosystem of Hadoop tools. The students should
respect good practices to design secure and
economical Big Data environments.
The integrated specialization project aims to deepen
students' knowledge by taking responsibility for
managing an IT project and solving a given problem.
This module allows students to work on a problem
that touches on the modules of semester 8 of the
software engineering specialization. More precisely,
we focus on the Spring Boot web development
framework in its latest version.
Financial reporting and analysis is a course that
prepares students to understand business strategy
and its financial implications. With a comprehension
of accounting concepts, students will be able to
explore the world of financial reporting and
analysis, including its diverse applications
influenced by the interactions of policymakers,
management, investors, and employees.
This course offers an overview of teamwork in
business and industry, covering team purposes,
team-building processes, conflict resolution, talent
management, and team-building activities. It
explores team structures, their significance,
development, management, and evaluation.
Additionally, a business simulation game is used to
apply general management, marketing, and strategic
decision-making skills to a specific management
scenario.
This course focuses on preparing students for
academic writing and critical reading, enabling them
to write academic essays confidently and
competently.
The purpose of this module is to learn Big Data
technologies for application development using a
wide ecosystem of Hadoop tools. The students should
respect good practices to design secure and
economical Big Data environments.
This course starts by giving students a detailed
knowledge of the different techniques used to create
distributed database systems. The students will then
be introduced to the concept of a data warehouse
system, and apply the distributed database
techniques they learned to implement a distributed
data warehouse.
This course allows students to have an in-depth
understanding of Internet of Things (IoT)
applications. The course will cover all the
components of an IoT application from the devices to
the Cloud, passing by gateways, edge devices,
middlewares, … The students will apply their
knowledge in a project by designing a full IoT
application using real hardware (Arduino and
Raspberry Pis).
This course covers the basic concepts and techniques
of both supervised and unsupervised learning from
both theoretical and practical perspectives. All
topics are accompanied by hands-on exercises with
implementations of ML algorithms in R and Python
languages.
This course introduces the fundamental principles
and techniques of computer vision. Topics include
geometric primitives and transformations in 2D and
3D spaces, photometry, classical image processing
techniques, and statistical models for image
classification and segmentation. Through lectures,
hands-on assignments, and projects, practical
experience is gained in implementing these concepts
using graphics libraries.
This course is an introduction to natural language
processing (NLP), focusing on the fundamental
concepts and techniques for analyzing and processing
natural language data. The course covers topics such
as tokenization, stemming, part-of-speech tagging,
parsing, dependency analysis, and named entity
recognition, as well as more advanced techniques
such as text classification, sentiment analysis, and
machine translation. In addition to traditional NLP
methods, we will also explore the use of neural
networks and recurrent neural networks (RNNs) for
NLP tasks, using PyTorch to implement these methods.
This module enables students to work on an issue
related to the topics covered in the 8th semester.
Instructors will propose projects that combine
aspects of designing a data-driven IT solution and
its implementation. Various types of projects will
be offered, such as analyzing sentiments on social
networks.
The course will enable students to understand the
challenges and practices of management and
leadership and implement them in engineering work.
Students will understand, analyze, and apply HR
processes as an engineer, and collaborate with HR
professionals. The course will also prepare students
to respond to job offers and be recruited, focusing
on understanding the IT job market. This includes
using the right tools to write CVs and cover letters
and preparing for interviews.
This course prepares for PMI certification,
representing a distinction in the job market. It
provides practical knowledge, ideas, and
professional expertise to meet the increasingly high
demands of IT projects.
This course focuses on preparing students for
academic writing and critical reading, enabling them
to write academic essays confidently and
competently.
The course aims to provide a comprehensive
understanding of building cloud infrastructure with
a focus on resource pooling and software-defined
infrastructure. Additionally, students will learn
about fault tolerance and business continuity in a
data center environment.
This course introduces the students to several
recent advances in computer networks that have a
significant impact on Cloud computing. This cover
will thus cover 5G and 6G, Content-Delivery
Networks, Information-Centric Networks, Vehicular
Networks, and Mobile-Edge Computing. The course will
also cover Blockchain and its potential applications
in Cloud.
This course explores cloud middleware and software
architecture, covering information systems,
client/server architectures, SOA, APIs, and
event-driven architectures like Apache Kafka. It
examines message-oriented middlewares and ESBs for
integrating and managing cloud services. Through
projects and case studies, students will design and
deploy robust, scalable software architectures with
a focus on performance and security. This blend of
theory and hands-on experience prepares students for
real-world cloud architecture challenges.
This course starts by giving students a detailed
knowledge of the different techniques used to create
distributed database systems. The students will then
be introduced to the concept of a data warehouse
system, and apply the distributed database
techniques they learned to implement a distributed
data warehouse.
The purpose of this module is to learn Big Data
technologies for application development using wide
ecosystem of Hadoop tools. The students should
respect good practices in order to design secure and
economical Big Data environments.
This integrated project course allows student to
apply the skills they acquired so far in the
program. The student will work in teams and will be
put in a situation where they have to migrate an
existing web application to the AWS Cloud. They will
have to design a Cloud architecture that is both
scalable, highly available, and cost-effective.
Financial reporting and analysis is a course that
prepares students to understand business strategy
and its financial implications. With a comprehension
of accounting concepts, students will be able to
explore the world of financial reporting and
analysis, including its diverse applications
influenced by the interactions of policymakers,
management, investors, and employees.
This course offers an overview of teamwork in
business and industry, covering team purposes,
team-building processes, conflict resolution, talent
management, and team-building activities. It
explores team structures, their significance,
development, management, and evaluation.
Additionally, a business simulation game is used to
apply general management, marketing, and strategic
decision-making skills to a specific management
scenario.
This course focuses on preparing students for
academic writing and critical reading, enabling them
to write academic essays confidently and
competently.
This course introduces fundamental and practical
knowledge of cryptography and its cybersecurity and
blockchain technology applications. Topics include
conventional encryption, symmetric and asymmetric
cryptology, digital signatures, certificates, key
exchange, key management, authentication, and
blockchain technology.
The course reviews existing exploits and the basics
of securing operating systems. It then covers
standard security measures and their usability
implications. Students will learn and apply
operating system security concepts by building
security policies and countermeasures from scratch.
This course teaches the fundamentals of secure
programming. An in-depth discussion on various
security vulnerabilities in web applications will be
taught with a hands-on demo. The course discusses
best practices (e.g., coding standards) and design
principles for secure programming so that security
can be built-in during design time. In this course,
students will be able to deploy, attack, and defend
modern web applications and implement
countermeasures.
The course covers designing, analyzing, and securing
networked systems. Topics include networking basics,
cryptography, hacking and patching applications,
penetration testing, and securing systems with
firewalls and IDS. This prepares students for roles
like Cyber Security Engineer, IT Security Analyst,
and Cyber Security Analyst.
This class covers secure embedded systems, exploring
security and privacy issues in devices like drones,
cars, medical implants, and appliances. The
instructor will lecture on pre-selected topics, and
students will work in teams of up to three on a
semester-long project addressing real-world security
issues in embedded systems.
The course involves group work, where students will
apply techniques from network security modules to
test their academic and technical skills. The focus
of this course is on analyzing, designing, and
implementing security solutions for information
systems.
This course explores laws, industry practices, and
policies related to developing, protecting, and
commercializing software, computers, and IT
services. The primary focus is on intellectual
property and contracts, with additional coverage of
international and commercial issues, antitrust law,
and current hot topics like apps, cloud, IoT, open
source licensing, and the Digital Millennium
Copyright Act.
This course focuses on preparing students for
academic writing and critical reading, enabling them
to write academic essays confidently and
competently.
This course emphasizes the design aspect of
service-oriented architecture, focusing on patterns
and best practices to ensure quality. The course
also covers recent technologies used for deployment,
including various technologies for open data
interchange, development, and use of web services.
Additionally, it covers REST API development and
micro-services architectures.
The objective of this course is to introduce the
development of cross-platform mobile applications
using the React Native Framework supported by
Meta/Facebook. Initially, the course focuses on
React JS concepts essential for starting programming
in React Native. The second part delves into the
main features of this Framework, including screen
creation (user interfaces), styles, Redux, and the
deployment of applications for Android and iOS.
This course will cover the basics of virtual
machines and containers, how CPU, storage, and
network are virtualized, and the hardware features
that assist virtualization.
This course gives students an overview of the field
of Virtualization, its enabling technologies, main
building blocks, and hands-on experience through
projects utilizing public cloud infrastructures
(Microsoft Azure) as well as hypervisors. This
course also covers in detail advanced topics in
OS-level virtualization through containers and their
orchestration.
This course aims to master techniques and tools used
for software industrialization and DevOps to
eliminate repetitive tasks and automate development
processes and application delivery. It initially
focuses on DevOps practices and the creation of
CI/CD pipelines for continuous integration and
continuous delivery. The course also emphasizes test
automation to evaluate verification and validation
theory and practice from a software engineering
perspective. Additionally, it explores the history,
principles, and techniques of verification and
validation across varied software domains. The goal
is to apply verification and validation techniques
to various software artifacts across the development
life cycle for both large and smaller software
systems.
This course delves into the theoretical foundations
and practical aspects of creating, designing, and
implementing augmented reality (AR) and virtual
reality (VR) systems. The course covers essential
topics such as user perception, intuitive
interaction, mitigating VR sickness, and iterative
design processes. Students will gain hands-on
experience with industry-standard development tools
and frameworks, enabling them to conceptualize,
develop, and evaluate immersive experiences across
various domains, including gaming, education,
healthcare, and beyond.
The R&D project aims to develop adaptability in an
academic environment, extend the concept of
commitment, and foster a strong work ethic. Students
will analyze real-life problems using a structured
methodology to propose solutions and implement
action plans.
The objective of this course is to master front-end
web development and complete the building blocks for
becoming a full-stack web developer. Students will
be introduced to the Angular Framework. The course
will also cover TypeScript, which forms the
foundation of the Angular Framework.
The course will enable students to understand the
challenges and practices of management and
leadership and implement them in engineering work.
Students will understand, analyze, and apply HR
processes as an engineer, and collaborate with HR
professionals. The course will also prepare students
to respond to job offers and be recruited, focusing
on understanding the IT job market. This includes
using the right tools to write CVs and cover letters
and preparing for interviews.
This course prepares for PMI certification,
representing a distinction in the job market. It
provides practical knowledge, ideas, and
professional expertise to meet the increasingly high
demands of IT projects.
This course presents how Spark can extend the data
parallel paradigm to the distributed case. It covers
Spark's programming model in detail, highlighting
how and when it differs from familiar programming
models like shared-memory parallel collections or
sequential Scala collections. Through hands-on
examples in Spark and Scala, the course addresses
important distribution issues such as latency and
network communication, and how they can be
effectively managed for improved performance.
The course covers advanced business intelligence
(BI) concepts, exploring how to solve business
problems using data warehouses and data mining in
the era of big data. It includes analysis, design,
and implementation of BI systems, discussing
reporting, enterprise data warehousing, decision
support, and knowledge management systems. Case
studies examine application software, web tools, and
the success and limitations of BI, alongside
technical and social issues.
This course covers topics such as tokenization,
stemming, part-of-speech tagging, parsing,
dependency analysis, and named entity recognition,
as well as more advanced techniques such as text
classification, sentiment analysis, and machine
translation. In addition to traditional NLP methods,
we will also explore the use of neural networks and
recurrent neural networks (RNNs) for NLP tasks,
using PyTorch to implement these methods.
This course is an advanced presentation of the
techniques of computer vision. Topics include
geometric primitives and transformations in 2D and
3D spaces, photometry, classical image processing
techniques, and statistical models for image
classification and segmentation.
This course aims to provide a comprehensive overview
of graph-based machine learning and graph neural
networks. It will cover the theoretical foundations
and algorithms of graph-based machine learning, as
well as the application of graph neural networks for
feature extraction, supervised learning, and
unsupervised learning. The course will also show how
these models can be used to solve real-world
problems such as node classification, link
prediction, and graph clustering.
This course explores Social Network Analysis
focusing on Social Network Graphs, Communities
Detection, and Closeness between Two Nodes. Students
learn graph theory's application to social networks,
community detection methods, and measures of node
proximity.
This course introduces fundamental concepts and
techniques of data mining and some parallelization
methods used in big data.
This course focuses on designing and developing
cloud-based applications that rely on large-scale
data processing and analysis. Students will learn
about the challenges and opportunities of building
data-driven applications in the cloud, and gain
hands-on experience with tools and techniques for
managing, storing, and analyzing large datasets.
This course explores creating immersive virtual and
augmented reality experiences. It delves into the
theoretical foundations and practical aspects of
designing, and implementing augmented reality (AR)
and virtual reality (VR) systems. The course covers
essential topics such as user perception, intuitive
interaction, mitigating VR sickness, and iterative
design processes. Students will gain hands-on
experience with industry-standard development tools
and frameworks, enabling them to conceptualize,
develop, and evaluate immersive experiences across
various domains, including gaming, education,
healthcare, and beyond.
This 8-week course enables final-year engineering
students to engage in hands-on scientific research.
Students work in groups, focusing on project
planning, literature review, data collection,
analysis, solution implementation, evaluation, and
result dissemination, while emphasizing teamwork,
problem-solving, critical thinking, and ethical
research considerations.
This course delves into the Economics of Data,
covering Personal Data concepts, rights, and values,
including privacy, and informational
self-determination. It explores Personal Data's
potential and includes case studies on Big Data's
business applications. The course also addresses
regulations on Personal Data protection, ensuring
legal security for businesses, and building trust
between users and companies.
This course explores digital entrepreneurship,
focusing on opportunities, challenges, and
techniques. Students will examine key Big Data
applications and attend seminars led by Big Data
professionals from Morocco, who will present their
projects from conception to implementation.
This course details advanced topics in OS-level
virtualization through containers and their
orchestration. Students are expected at the end of
the course to be able to understand in detail the
internals on how containers work.
This course covers advanced topics in network
virtualization through SDN. Students are expected at
the end of the course to be able to understand in
detail the internals on how network virtualization
work.
This course focuses on mastering techniques and
tools for software industrialization and DevOps. It
covers DevOps practices, CI/CD pipelines, and test
automation for verification and validation. Students
will learn to apply these techniques across various
software artifacts and domains, enhancing
development processes and application delivery.
This course gives students detailed knowledge of
multimedia systems and how to develop them. They
will especially learn the different challenges faced
by streaming, live streaming, and conferencing
applications.
This course focuses on designing and developing
cloud-based applications that rely on large-scale
data processing and analysis. Students will learn
about the challenges and opportunities of building
data-driven applications in the cloud, and gain
hands-on experience with tools and techniques for
managing, storing, and analyzing large datasets.
This course delves into the theoretical foundations
and practical aspects of creating, designing, and
implementing augmented reality (AR) and virtual
reality (VR) systems. The course covers essential
topics such as user perception, intuitive
interaction, mitigating VR sickness, and iterative
design processes. Students will gain hands-on
experience with industry-standard development tools
and frameworks, enabling them to conceptualize,
develop, and evaluate immersive experiences across
various domains, including gaming, education,
healthcare, and beyond.
The “Research and Development Project” is an
eight-week course for final-year engineering
students to engage in hands-on scientific research.
Students work in groups under faculty guidance from
project inception to completion. The course covers
project planning, literature review, data
collection, analysis, implementation, evaluation,
and result dissemination, emphasizing teamwork,
problem-solving, critical thinking, and ethical
considerations. By the end, students gain practical
research experience, preparing them for future
research and innovation roles.
The course will enable students to understand the
challenges and practices of management and
leadership and implement them in engineering work.
Students will understand, analyze, and apply HR
processes as an engineer, and collaborate with HR
professionals. The course will also prepare students
to respond to job offers and be recruited, focusing
on understanding the IT job market. This includes
using the right tools to write CVs and cover letters
and preparing for interviews.
This course prepares for PMI certification,
representing a distinction in the job market. It
provides practical knowledge, ideas, and
professional expertise to meet the increasingly high
demands of IT projects.
This course provides students with a foundation in
research methods used in engineering disciplines.
Students will learn the key elements of research
design, including formulating research questions,
developing hypotheses, and selecting appropriate
research methods. They will also learn to collect
and analyze data using various techniques like
experiments, simulations, and data analysis tools.
This course details advanced topics in OS-level
virtualization through containers and their
orchestration. Students are expected at the end of
the course to be able to understand in detail the
internals on how containers work.
This course covers advanced topics in network
virtualization through SDN. Students are expected at
the end of the course to be able to understand in
detail the internals of how network virtualization
work.
This course provides a comprehensive understanding
of database security fundamentals, covering risk
assessment, access control, encryption,
authentication, and authorization. Students will
gain knowledge in implementing auditing and
monitoring, as well as developing and applying best
practices for security policies and procedures. The
course emphasizes critical thinking,
problem-solving, and ethical considerations in the
context of database security.
This course is designed to provide all the skills
needed for successful digital forensics.
This course explores the future of cybersecurity,
including emerging technologies and the challenges
they present. It discusses the development of cyber
solutions and the associated risks and
opportunities. Students will gain a basic
understanding of these critical emerging
technologies and learn to develop foreign
policy/national security strategies, policy options,
and risk mitigation plans. The course also focuses
on developing professional skills such as strategy
development, memo writing, briefing, and basic
financial analysis.
This course introduces Cyber Threat Intelligence
(CTI) and its role in cybersecurity. Students will
learn the fundamentals of CTI, including threat
intelligence, data loss prevention, mobile endpoint
protection, Security Information and Event
Management (SIEM), and Security Orchestration,
Automation, and Response (SOAR). The course will
also cover the skills required for Security
Operations Center (SOC) analysts, log analysis, and
malware analysis.
In this course, students are introduced to common
countermeasures that effectively reduce and/or
mitigate attacks. They will also practice using
structured knowledge bases to discover
vulnerabilities and recommend solutions for
tightening network security and protecting data from
potential attackers.
The course involves group work and will focus on
analyzing, designing, and developing security
countermeasures for information systems. Students
will test their research and technical skills by
developing and implementing techniques studied in
computer security, operating systems, and
applications.
This course aims to help students identify and
prioritize information assets and threats. Students
will learn how to define an information security
strategy and architecture. Upon completion, students
will be able to plan for and respond to intrusions,
describe legal and public relations implications of
security issues, and present an incident and
disaster recovery plan.
This course is designed to give students an in-depth
understanding of security management, governance,
and risk management principles, including IT audit
techniques.