LECTURING – LEBANESE AMERICAN UNIVERSITY
- CSC458 – Game Programming – Spring 2022: The course taught students the development of games using the Unity game engine. Topics covered include Design Patterns and Singletons, Coroutines and Multithreading, Graphics features such as Cameras, Lighting, Particle Systems, Models, textures, Real-Time Physics, Animations, Raycasting, Navigation Mesh, Pathfinding, and Intro to AI (Finite State Machine & Behaviour Trees), PostProcessing, Pooling and Memory Management, Audio, UI and User Interactivity, Serialization, Persistence of data (saving and loading data) and Game Design Document & Technical Design Document. Hands-on experience is part of the class.
- CSC 245 – Objects and Data Abstraction – Spring 2022: The course taught students the techniques of Object Oriented Programming and problem solving, with emphasis on abstraction and data structures. Topics include: object oriented concepts, such as, composition, inheritance, polymorphism, information hiding, and interfaces; basic program design and correctness, such as, abstract data types, preconditions and post conditions, assertions and loop invariants, testing, basic exception handling, and the application of algorithm design techniques. The course also covers: basic algorithmic analysis, time and space tradeoffs in algorithms, big-O notation; fundamental data structures and applications, such as, collections, single- and double-linked structures, stacks, queues, and trees; recursion and performance issues for data structures.
LECTURING – LEBANESE INTERNATIONAL UNIVERSITY
- CSCI 475 – Artificial Intelligence – Spring 2012 – 2013, Summer 2012-2013, Spring 2013-2014, Spring 2020-2021: The course teaches artificial intelligence concepts with an emphasis on search techniques. The course is divided into 2 parts: the first part introduced AI, agents and search algorithms and the second part introduced methods for knowledge representation and inference techniques (Propositional and First Order Logic). Practical works and assignments were conducted using the PROLOG Language.
- For Spring 2020-2021: The course was updated to cover Python programming for machine learning, Mathematics for AI and machine learning, essential Machine learning/Deep learning concepts & algorithms and the usage of deep learning frameworks such as Google TensorFlow.
- CSCI 440 – Algorithms – Summer 2012-2013, Fall 2013-2014: The course covered algorithms design and analysis (time complexity), recursion, divide and conquer, dynamic programming, and diverse algorithms including sorting algorithms such as Selection Sort, Insertion Sort, Bubble Sort, Shellsort, Quicksort, Mergesort, Heapsort etc.) and searching algorithms (key index search etc…)
- CSCI 378 – Data Structures and Algorithms – Spring 2020-2021: the course covered the design and implementation of important data structures and their algorithms in addition to their time complexity using the big-Oh notation. The data structures considered include: stacks, queues, linked lists, trees, and graphs. In addition, the course covered the most famous sorting algorithms.
- CSCI 380 – Software Engineering – Spring 2012-2013, Spring 2013-2014: This course was aimed at helping students build up an understanding of how to develop a software system from scratch by guiding students through the different phases of software life cycle. The course emphasised on problem formulating and solving. Students learned how to analyse a problem domain and how to develop the appropriate analysis and design methods to formalize the requirements using object oriented methods and appropriate theory. The course introduced students to the different software process models, project management, software requirements engineering process and systems analysis and design as a problem-solving activity.
- CSIT 390 – DBMS Development and Administration – Spring 2012-2013, Spring 2013-2014: The course taught students how to install, configure and maintain SQL Server 2008 R2 DBMS. Students learned how to create, administer, maintain, backup, tune-up, secure and query a database using the TSQL language. In addition they learned to design indexes, partition, import and export data. Advanced topics such as Authenticating, authorizing and assigning roles, clustering, mirroring, replication and SQL Server reporting services were also taught. My responsibilities involved course lecturing, and giving hands on practice on SQL Server 2008 R2.
- CSCI 335 – Database Systems – Fall 2012-2013, Fall 2013-2014: The course introduced students to the fundamentals of database systems. It included data modelling using ER, data normalization and data manipulation (Relational Algebra, Relational Calculus and SQL Queries). Students learned how to design, implement and query a relational database by using a DBMS such MS SQL Server. My responsibilities involved course lecturing, and giving hands on practice on MS SQL Server 2008.
- CSCI 300L – Intermediate Programming with Objects Lab – Fall 2012-2013: The course emphasised the principle concepts related to object oriented programming using the Java programming language. During the course, students learned how to build, debug, and run Java applications, as well as how to build java packages, import java built-in packages and developer defined packages. My responsibilities involved giving hands on practice on NetBeans IDE and on how to solve complex problems in Java.
- CSCI 265 – Computer Science Overview – Spring 2013-2014: This course presented a breadth coverage of computer science courses so that students would understand computing and appreciate technology’s impact on society. Topics included binary values and numerical systems; data representation; gates and circuits; computing components; problem solving and algorithm design; low-level and high-level programming languages; abstract data types and algorithms; operating systems; file systems and directories; information systems; computer networks; and the world wide web. My responsibilities involved course lecturing.
- CSCI 490 – Information System Development – Spring 2012-2013, Spring 2013-2014: It is the equivalent of senior projects course or module in other universities but was made as a taught and as a research course in the same time. The main objective of the course was to supervise a senior project topic that the student chooses during 4 months. The course contained several lectures on software engineering topics from Reusable Technology, Modeling with Classes , Using Design Patterns , Testing and Inspecting to Ensure High Quality and many other topics.
- CSCI 200 – Introduction to Computers – Spring 2011-2012, Summer 2011-2012, Fall 2012-2013, Spring 2012-2013, Fall 2013-2014, Spring 2013-2014, Fall 2020-2021
Supervising CS senior projects
- Supervised many final year undergraduate students
OTHER ACADEMIC DUTIES
- Participating in Peer review
- Participating in Curricula design of many courses such as Software engineering, Introduction to Computer, Database Systems, DBMS administration and Artificial Intelligence.
- Designing and teaching workshops on different topics
TEACHING EXPERIENCE IN UNIVERSITY OF ST ANDREWS
- CS1002 – Object Oriented Programming (Martinmas Semester 2015-2016, Martinmas Semester 2016-2017)
- CS1003 – Programming with Data (Candlemas Semester 2014-2015, Candlemas Semester 2015-2016)
- CS2002 – Computer Systems (Candlemas Semester 2015-2016)
- CS2003 – The Internet and the Web (Martinmas Semester 2014-2015)
- CS2006 – Advanced Programming Projects (Candlemas Semester 2015-2016)
- CS3102 – Data Communications and Networks (Candlemas Semester 2014-2015)
- CS1005 – Computer Science in Everyday Life (Martinmas Semester 2016-2017)
- CS1006 – Programming Projects (Candlemas Semester 2014-2015)
MARKING COMPUTER SCIENCE AND IT MODULES
- CS1006 Programming Projects (Candlemas Semester 2014-2015)
- CS3102 Data Communications and Networks (Candlemas Semester 2014-2015, Candlemas Semester 2015-2016)
- CS3104-Operating Systems (Martinmas Semester 2014-2015)
- IS5102-Database Management Systems (Martinmas Semester 2014-2015)