
This course is a Template, please add your description and change the course photo.
- Teacher: Noura Aboudi

This course is a Template, please add your description and change the course photo.
This module introduces the principles, engineering, and administration of relational databases. It combines theoretical foundations with hands-on practice to develop a comprehensive understanding of database design, implementation, and management. It introduces entity-relationship modeling, the relational model, normalization, SQL/PLSQL, DBMS architecture, and administration tasks. The emphasis is to reinforce the conceptual and practical skills required to design databases and administer them in real-world scenarios.
- Teacher: Jihed Hammami

This course is a Template, please add your description and change the course photo.
- Teacher: MAYSSA BEN KAHLA

This module introduces students to Python programming and its core applications in Artificial Intelligence and Machine Learning. Through an integrated blend of lectures, hands-on labs, and project-based learning, students progressively develop skills in Python syntax, data manipulation, visualization, and model implementation using key libraries such as NumPy, pandas, scikit-learn, and TensorFlow. The course emphasizes practical understanding over theory, guiding students from basic programming concepts to the creation of full AI workflows involving data preprocessing, model training, evaluation, and deployment. By the end of the module, students are equipped to design and implement efficient, ethical, and reproducible AI solutions in Python, forming a strong foundation for advanced studies and professional practice in data-driven fields.
- Teacher: Khouloud Chelbi

Description
This course provides practical guidance on mastering object-oriented programming (OOP) and advanced Java programming concepts.
Throughout the course, you'll learn how to design, implement, and manage Java programs using OOP principles and modern Java features. You will gain hands-on experience with classes, objects, inheritance, polymorphism, interfaces, packages, exception handling, file I/O, collections, functional programming, concurrency, and multithreading. Each week, you’ll apply the concepts learned by progressively building a mini-project, allowing you to see how OOP principles and Java techniques work in real-world software development. By the end, you'll have a comprehensive understanding of Java programming and be ready to develop robust, scalable, and maintainable applications.
Learning Objectives
By the end of this course, students will be able to:
-
Apply OOP principles to design flexible and reusable Java programs.
-
Organize code with classes, packages, and modular programming techniques.
-
Handle exceptions, read/write files, and manipulate collections efficiently.
-
Use functional programming constructs, multithreading, and concurrency utilities.
-
Integrate modern Java features into real-world projects.
-
Develop and finalize a complete mini-project demonstrating all learned concepts.
- Teacher: Fatma Mechri

This course is a Template, please add your description and change the course photo.
- Teacher: Imen Ben Abdelwahed
This course provides a practical and conceptual introduction to the fundamental principles of Algorithms and Data Structures, essential for solving computational problems efficiently. Through a combination of theory and hands-on programming in C, students will learn how to design, implement, and analyze algorithms and data structures that form the backbone of computer science.
Key topics include iteration, recursion, divide-and-conquer techniques, pointers, arrays, linked lists, stacks, queues, trees, and algorithmic complexity analysis.
Learning Objectives
By the end of this course, students will be able to:
-
Explain fundamental algorithmic concepts such as iteration, recursion, sorting, searching, and divide-and-conquer.
-
Describe and apply principles of memory management (static and dynamic) in C.
-
Analyze algorithm time complexity using Big O notation.
-
Implement and manipulate fundamental data structures (arrays, linked lists, stacks, queues, trees).
-
Apply iterative and recursive problem-solving techniques to design efficient solutions.
-
Select appropriate data structures and algorithms for specific computational tasks.
-
Demonstrate structured thinking, debugging, and code optimization skills.
-
Evaluate trade-offs between time, space, and implementation paradigms when solving algorithmic problems.
- Teacher: Fatma Mechri