Available courses

Algorithmic & Programming
Kamal BeydounAntoun YaacoubSarah AlamehNancy AlRazzakHasan HmedehAli Noureldin

Algorithmic & Programming

The objective of this course is to introduce students to the basics of imperative programming which is one of the most effective paradigms of modern programming. Thus, the theme of algorithmic will be discussed to prepare the continuation of the course. Indeed, an algorithm expresses the logical structure of a solution to a given problem and this independently of any language and any machine. Algorithmic is one of the key steps in teaching programming. Then, it is a matter of applying the knowledge approached in algorithmic through the mastery of a programming language. This is precisely the purpose of this second part of this module which aims to equip students with the background necessary to master a given programming language, in this case the C language, which is at the base of many others. Our objectives are summarized as follows:

  • Learn the basic concepts of algorithmic
  • Be able to implement these concepts to analyze simple problems
  • Mastering abstraction mechanisms in order to analyze a problem and systematically design correct and adequate algorithms and programs
  • Implement, using the C language, the algorithms solving a particular problem
  • Master the basics of modular programming

Functional Programming - Python
Antoun Yaacoub

Functional Programming - Python

This course is designed: 

  • to give students a thorough understanding of the Python programming language and it's rich set of libraries;
  • to expose students to applications where Python programming is effective, and 
  • c) to introduce students to pros and cons of scripting vs. compiled programming languages. 
Python is an interpreted, inherently object oriented dynamic language which has been gaining popularity for the past several years. It’s widely used by organizations such as NASA, Google and Industrial Light and Magic, among others. 

It has easy to understand syntax which allows programmers to develop programs faster and be more efficient. Python has proven to be equally as useful for small scripts as well as large scale software systems. 

Due to Python’s ease of use, students will gain expertise with many details of the language as well as programming fundamentals in a short period of time.

Graph Theory
Siba HaidarAntoun Yaacoub

Graph Theory

The intended learning outcome of this course is to give good knowledge of graph theoretical concepts, and to practice how to use them in mathematics, natural science and computer science.

After completing the course, students should be able to:

  • know some important classes of graph theoretic problems;
  • be able to formulate central theorems about trees, matching, connectivity, colouring and planar graphs;
  • be able to describe and apply some basic algorithms for graphs;
  • be able to use graph theory as a modelling tool.

Data Structures
Siba HaidarZein IbrahimAntoun Yaacoub

Data Structures

Students learn to develop applications where complete implementation requires high skills in structured programming domain. The main objectives are to specify, conceive and develop modules implementing the fundamental data structures and to choose the most appropriate data structure to represent data in a given problem and to allow its resolution by applying efficient and optimal operations.

Advanced Algorithms
Siba HaidarAntoun Yaacoub

Advanced Algorithms

This course explores advances in algorithm design, algorithm analysis and data structures. The primary focus is on advanced data structures. Topics include advanced trees structures, disjoint sets, heaps, algorithm design techniques, data structures for strings and linear programming algorithms. Finally, we discuss NP-completeness.


Site announcements

Editing Your Moodle Profile

by Antoun Yaacoub -

Everyone enrolled in one of my courses has a personal profile page in my Moodle page. This page allows you to post your picture, a personal statement, and other information you would like your peers, students, or classmates to see. It is visible to all other participants in each course your are enrolled in.


Adding a profile picture

1. In the upper right hand corner click on Your Name, Profile.


2. Go to the User details block. Click on Edit Profile.



3. Scroll to the section labeled User picture.



Click the Add button, (it looks like a piece of paper). This will take you to "file picker" where you can upload a file or you can drag and drop a photo from your computer. NOTE: The picture must be in JPG or PNG format. Moodle will crop the image to a 100x100 pixel square. Your Moodle upload limit applies.

Profile picture

4. Once selected, go to the bottom of the page and click Update profile at the bottom of the page.

NOTE: Refresh your browser if the profile image hasn't changed.


Updating other fields

  1. There are numerous preference settings you can adjust.

  2. You may wish to include some of the following information:

      • Web page address
      • IDs for common peer-to-peer and social networking sites
      • Department
      • Phone numbers
      • Campus Address
      • Click the Update profile button at the bottom of the page.


Other information that cannot be updated

Much of the information in the top section of the Edit profile page is drawn from your LU team account. Changes made to this information will not be retained.

      • Username
      • Password
      • First name
      • Last name
      • Email address — this should always be your campus email address
      • ID number field
If you find any of these are incorrect, please contact me to have it corrected.