Over 22 years of teaching experience across 15+ courses in Computer Science and Operations Research
"Learning is more effective when it is an active rather than a passive process" - Kurt Lewin
My teaching philosophy is rooted in the conviction that education should inspire curiosity, foster critical thinking, and equip students with the theoretical knowledge and practical skills necessary for success in rapidly evolving fields. With over 22 years of teaching experience across diverse academic environments in Tunisia, Saudi Arabia, and through international collaborations, I have developed an approach that emphasizes active learning, real-world applications, interdisciplinary integration, and student-centered pedagogy.
Learning is most effective when students actively engage with material through hands-on projects. My industry experience with FedEx-SMSA, the Tunisian National Oil Office, and as co-founder of Filloop.com enriches my teaching by incorporating actual consulting problems, demonstrating how academic concepts translate to business value.
I challenge students to move beyond memorization through open-ended problems with multiple solution approaches, class discussions defending methodology choices, and collaborative projects. I create an inclusive classroom atmosphere by accommodating diverse learning styles and providing multiple pathways to demonstrate mastery.
I actively incorporate modern technologies including programming environments (Python, Java, C++), optimization solvers (CPLEX, Gurobi), machine learning frameworks (TensorFlow, PyTorch), visualization tools for algorithm analysis, and online collaboration platforms for group projects.
My commitment to student mentorship is demonstrated through successfully supervising 7 Ph.D. students (6 completed) and 11 Master's students, with many now serving as faculty members or industry professionals. I emphasize regular meetings with clear objectives, progressive independence, publication mentorship, and career development support.
Teaching Impact: Multiple Ph.D. graduates now serving as faculty members, Best Student Paper Award (IEEE LOGISTIQUA 2011), and consistent positive feedback highlighting clarity of explanation, enthusiasm, availability, and practical relevance of content. I have contributed to curriculum development committees, program accreditation processes, and designed new courses addressing emerging areas such as Cloud Computing Optimization and AI for Healthcare.
This course provides an in-depth exploration of optimization algorithms and their role in artificial intelligence. It covers single-solution and population-based metaheuristic techniques, including local search, tabu search, genetic algorithms, and swarm intelligence. Students learn to analyze, evaluate, and implement these techniques to solve complex optimization problems. The course emphasizes practical implementation, enabling students to build intelligent software solutions and enhance computational efficiency in real-world scenarios.
This course focuses on the design and implementation of problem-solving systems based on logic and optimization principles. It introduces students to logic problem solvers, including data representation, query formulation, and reasoning mechanisms. The course covers query evaluation and optimization techniques, constraint satisfaction problems, and linear programming methods for modeling and solving optimization problems. Through theoretical study and practical exercises, students develop effective problem-solving solutions for various computational domains.
This course introduces advanced numerical computation concepts essential for PhD-level scientific computing. Topics include numerical precision, error sources, floating-point computation, algorithmic stability, and optimization. Students develop theoretical understanding and practical implementation skills using Python through analytical exercises, coding tasks, and research-oriented projects.
This course covers fundamental concepts underlying contemporary operating systems. Students learn about process management, CPU scheduling, synchronization, and deadlock prevention. Topics include memory management strategies with contiguous and non-contiguous allocation, and virtual memory concepts. Through theoretical study and programming assignments, students develop skills to analyze operating system performance and understand hardware resource management.
Courses taught over 21 years at various universities
Introduction to AI covering intelligent agents, search algorithms, knowledge representation, logic, machine learning fundamentals, and neural networks. Students implement AI algorithms and work on practical projects.
Fundamental data structures (arrays, linked lists, trees, graphs, hash tables) and algorithms for sorting, searching, and graph traversal. Covers complexity analysis and algorithm design paradigms.
Computational complexity of Algorithms and Problems. Topics include P vs NP, NP-completeness, reductions, approximation algorithms, and randomized algorithms. Applications to real-world problems.
Object-oriented programming principles: encapsulation, inheritance, polymorphism, and abstraction using Java programming language. Emphasizes design patterns and best practices.
Design and implementation of distributed systems covering communication protocols, consensus algorithms, fault tolerance, and consistency models. Includes microservices, cloud computing, and distributed data processing.
Mathematical foundations of graphs including traversal algorithms, shortest paths, minimum spanning trees, network flows, and graph coloring. Applications to network routing and optimization problems.
Mathematical optimization using simplex algorithm, duality theory, sensitivity analysis. Applications include production planning, transportation, and resource allocation using CPLEX and Gurobi.
Heuristic and metaheuristic techniques including Genetic Algorithms, Simulated Annealing, Tabu Search, and Particle Swarm Optimization. Applications to scheduling, routing, and combinatorial optimization problems.
Programming for operations research using modeling languages (AMPL, OPL) and solvers (CPLEX, Gurobi). Implementing custom algorithms and building decision support systems.
Mathematical foundations including logic, proof techniques, set theory, combinatorics, discrete probability, and Boolean algebra. Essential preparation for computer science.
Systems programming using C and C++. Covers pointers, memory management, OOP concepts, templates, and STL. Essential for operating systems and embedded systems development.
Recent advances in AI including deep reinforcement learning, neural architecture search, transformers, generative models, and explainable AI. Features research paper discussions and implementation projects.
Comprehensive slide decks for all lectures, available in PDF format
Working code samples and implementations on GitHub
Textbooks, papers, and additional reading resources
Recorded lectures and tutorial videos
Problem sets, projects, and practice exercises
Online forum for questions and discussions
All course materials are regularly updated. Students enrolled in current courses can access additional resources through the university's learning management system. For any questions regarding course materials or access, please contact me via email.