Welcome to Bilal's Online Courses!

This e-learning site is created using Moodle and it is managed by me, Bilal Said, an assistant professor in computer science at both the Arts, Sciences and Technology University in Lebanon (AUL) and the Lebanese university (LU).

It is currently used to collect, organize and share my courses contents with my students. It is also used to assess them on certain tasks (quizzes, homework submissions, workshops...) and to promptly communicate with them.

The recorded videos are hosted on my YouTube channel, that you may freely follow to get timely updates each time I upload a new video.

All the content is freely accessible to any other peers and students; just choose "login as a guest". 

Everyday, I further enrich this site and I intend to make it an open learning platform for life-long learners, mainly in computer science and technology, and in any other domain of expertise as well.

Learning is not the product of teaching. Learning is the product of the activity of learners. — John Holt

Available courses

This course is offered to master and graduating BS students in CSC and CCE at AUL. It initiate the students to basic mobile development for the Android platform, namely hands-on the Android Studio, Android projects creation, running and debugging, basic GUI (with adaptation to various locals, screen sizes and resolutions), basic business logic and storing user settings using shared preferences. 

This course also covers more advanced topics such as creating list views with a data adapter, data request from remote web services, the use of asynchronous tasks for multi-threading with GUI update, view recycler, more on fragments, shared preferences, SQLite, content providers and loaders.



The course discusses the basics of Arduino microcontroller (controlling LEDs, DC motors, serial communication), android mobile development under MIT app inventor, the creation of professional well formatted documents under Microsoft word/Google docs, the manipulation, analysis and charting of large amount of data under Microsoft Excel/google Sheets and the creation of professional well animated presentation under Microsoft PowerPoint/Google Slides. The course also reviews ethical cases in computer science and Engineering under NSPE, ACM, ASME and IEEE.

This course aims at helping CSC and CCE graduate students in successfully establishing their research and professional master thesis projects. In fact, the students will be able to pick up a convenient master thesis topic and collaborate with a supervisor, to explore, read and analyze the underlying literature, to write a complete and clear master thesis proposal, then to successfully defend it in front of a jury. It also aims at helping the students in acquiring a broader sense of research and its underlying mechanisms as a long-term Ph.D. activity and then as a life career.


This course covers the following topics: An introduction to the system development process which links user requirements to the computer based system. This course will provide students with a basic exposure to the tasks and challenges facing today’s projects .This course emphasizes problem formulating and problem solving. Students learn how to analyze a problem domain and develop the appropriate analysis and design models to formalize the requirements using object oriented methods and appropriate theory.


This course is an introduction to the world of mobile information systems and mobile applications development with a focus on business applications such as mobile commerce, marketing, banking and on ubiquitous computing such as context awareness, ambient intelligence and mobile learning. Hence, the outcome is two folds: learning how to develop quality mobile applications and learning how to propose the right design, technology and platform for a specific business application domain.

The first part requires learning about the various and mostly used mobile platforms and devices; the specificities of mobile computing in terms of reduced performance and intermittent connectivity; the different development approaches (Native, Web-based and Hybrid) and about matching the right mobile solutions for specific application domains. On the other hand, the students will learn, from a business point of view, about the potential of mobile applications in leveraging new services, targeting new and wider customers’ markets and how this influences the design and development cycles of mobile apps.

The second course builds on top of the first one, where the students are initiated to basic mobile development for the Android platform, namely hands-on the Android Studio, Android projects creation, running and debugging, basic GUI (with adaptation to various locals, screen sizes and resolutions), basic business logic and storing user settings using shared preferences. 

The course covers more advanced topics such as creating list view with a data adapter, data request from remote web services, the use of asynchronous tasks for multi-threading with GUI update, view recycler, more on fragments, shared preferences, SQLite, content providers and loaders.


This course is an introduction to intensive, parallel and distributed computing. It presents to the students the set of software and hardware techniques that allows the simultaneous execution of independent sequences of instructions on multi- or many- processors and/or cores. It also covers the development and the evaluation of parallel programs using various well-known parallel programming models and libraries such as OpenMP, MPI and CUDA.


This course covers advanced programming and problem solving techniques. By validating this course, students will be able to calculate the time and space complexity of programs and to eventually propose convenient reductions. They will be able to specifically apply this knowledge on sorting algorithms. They will also be able to use, design, and implement various data structures such as Array List, Linked List, Stack, Queue, Tree, Map, Hash Table and Graph.


Images source: Data Structures and Algorithms in Java, 6th Edition, Wiley 2014

This course covers the following topics: An introduction to the system development process which links user requirements to the computer based system. This course will provide students with a basic exposure to the tasks and challenges facing today’s projects .This course emphasizes problem formulating and problem solving. Students learn how to analyze a problem domain and develop the appropriate analysis and design models to formalize the requirements using object oriented methods and appropriate theory.


This course aims to give a global overview of the field of computing, by introducing different sub-domains of computing (architecture, operating systems, languages, networks). It aims to provide students with a computer culture by instilling them with precise knowledge of the means used in computers and their methods of use while introducing them to new areas of computer knowledge and providing them with the necessary elements to better understand other computer courses.

Ce cours donne une introduction aux outils bureautiques MS Office Word, Excel et Access.

Avec Word, les étudiants seront amenés à créer des documents complets, avec une bonne organisation, une page de couverture, une table de matières, une numérotation de pages, des libellés numérotés de figures et de tables, des entêtes et des pieds de pages, des références et des index tous automatisés et personnalisés.

Sous Excel, les étudiants seront capables de créer des tables de données, de les mettre en forme, d'y calculer des informations utiles et de les visualiser avec des graphiques (i.e. charts). Les formules apprises varient de celles basiques comme la somme et la moyenne, à celle intermédiaires comme les SUMIF, COUNTIF et AVERAGEIF, pour enfin utiliser les conditions simples et imbriquées avec les formules IF.

Enfin, les étudiants saurant créer des bases de données relationnelles sous Access afin d'y saisir des données, de les requêter, de leur créer des formulaires de saisie et d'en tirer des rapports imprimables.


Ce cours est une initiation à l'informatique, l'algorithmique et la programmation destiné aux étudiants en biologie.

A la fin de ce cours, les étudiants seront capables de comprendre l'architecture d'un ordinateur, ses principaux composants électroniques ainsi que les périphériques de stockage, d'entrées et de sortie. Ils pourront décrypter une configuration proposée sur le marché afin de pouvoir se procurer un système informatique qui répond aux besoins et avec un bon rapport qualité prix. Les étudiants vont pouvoir distinguer entre materiel, logiciel et données, et le role de chaque concept dans les systèmes informatiques.

En validant ce cours, les étudiants seront capables de discuter la notion d'algorithme et de programme informatique, ainsi qu'écrire des programmes de petite taille avec des instructions de lecture du clavier et d'affichage textuel à l'écran, des instructions de définition et d'initialisation de variables de différents types de base (nombres, caractères...), de faire du calcul arithmétique, de brancher avec des instructions de control (if-else), et de réaliser des tâches répétitives avec des instructions de boucle (while, for et do-while).

Images sources:
https://umr-agap.cirad.fr/en/news/bioinformatics-formation
http://engonang-bioinfo-2pe.e-monsite.com/pages/presentation.html

 

This course is an introduction to software engineering (SE). By the time the students validate this course, they will be able to discuss the importance of SE, to define, identify and give examples on the various phases of the Software Development Life Cycle, as well as the various known ways and possible sequences of planning and executing these phases, i.e. the various software development models. Students will be equally able to perform thorough requirements engineering and analysis, and clear specifications along with UML Use Case diagrams and Detailed Textual Descriptions of use cases. Subsequently, they are able to design convenient software solutions that, once implemented, they would meet the original requirements. In this course, the students learn how to test, verify and validate software artifacts, with hands-on using the JUnit testing framework, and they learn how to collaborate on code repositories using the most famous distributed VCS, Git, with a its most-used cloud back end, GitHub.

This course is offered to master students in CSC and CCE at AUL. It initiate the students to basic mobile development for the Android platform, namely hands-on the Android Studio, Android projects creation, running and debugging, basic GUI (with adaptation to various locals, screen sizes and resolutions), basic business logic and storing user settings using shared preferences. 

This course also covers more advanced topics such as creating list views with a data adapter, data request from remote web services, the use of asynchronous tasks for multi-threading with GUI update, view recycler, more on fragments, shared preferences, SQLite, content providers and loaders.


This course is offered to master students in Management Information Systems. It builds on top of the previous "Mobile Information Systems" course where the students are initiated to basic mobile development for the Android platform, namely hands-on the Android Studio, Android projects creation, running and debugging, basic GUI (with adaptation to various locals, screen sizes and resolutions), basic business logic and storing user settings using shared preferences. 

This course covers more advanced topics such as creating list view with a data adapter, data request from remote web services, the use of asynchronous tasks for multi-threading with GUI update, view recycler, more on fragments, shared preferences, SQLite, content providers and loaders.


This course provides theoretical and practical knowledge required to perform administration of computer systems and networks. It covers the fundamentals of system administration under Linux, with emphasis on principles that apply to all environments. 



Ce cours donne une introduction aux outils bureautiques MS Office Word, Excel et Access.

Avec Word, les étudiants seront amenés à créer des documents complets, avec une bonne organisation, une page de couverture, une table de matières, une numérotation de pages, des libellés numérotés de figures et de tables, des entêtes et des pieds de pages, des références et des index tous automatisés et personnalisés.

Sous Excel, les étudiants seront capables de créer des tables de données, de les mettre en forme, d'y calculer des informations utiles et de les visualiser avec des graphiques (i.e. charts). Les formules apprises varient de celles basiques comme la somme et la moyenne, à celle intermédiaires comme les SUMIF, COUNTIF et AVERAGEIF, pour enfin utiliser les conditions simples et imbriquées avec les formules IF.

Enfin, les étudiants saurant créer des bases de données relationnelles sous Access afin d'y saisir des données, de les requêter, de leur créer des formulaires de saisie et d'en tirer des rapports imprimables.


This course is an introduction to intensive, parallel and distributed computing. It presents to the students the set of software and hardware techniques that allows the simultaneous execution of independent sequences of instructions on multi- or many- processors and/or cores. It also covers the development and the evaluation of parallel programs using various well-known parallel programming models and libraries such as OpenMP, MPI and CUDA.


This course covers the following topics: An introduction to the system development process which links user requirements to the computer based system. This course will provide students with a basic exposure to the tasks and challenges facing today’s projects .This course emphasizes problem formulating and problem solving. Students learn how to analyze a problem domain and develop the appropriate analysis and design models to formalize the requirements using object oriented methods and appropriate theory.



This course covers the following topics: Intelligent agents, problem solving and search, game playing, constraint satisfaction, logical agents, logic, and inference. 

This course aims at helping CSC and CCE graduate students in successfully establishing their master thesis. In fact, the students will be able to pick up a convenient master thesis topic and collaborate with a supervisor, to explore, read and analyze the underlying literature, to write a complete and clear master thesis proposal, then to successfully defend it in front of a jury. It also aims at helping the students in acquiring a broader sense of research and its underlying mechanisms as a long-term Ph.D. activity and then as a life career.


This course is an introduction to the world of mobile information systems and mobile applications development with a focus on business applications such as mobile commerce, marketing, banking and on ubiquitous computing such as context awareness, ambient intelligence and mobile learning. Hence, the outcome is two folds: learning how to develop quality mobile applications and learning how to propose the right design, technology and platform for a specific business application domain.

The first part requires learning about the various and mostly used mobile platforms and devices; the specificities of mobile computing in terms of reduced performance and intermittent connectivity; the different development approaches (Native, Web-based and Hybrid) and about matching the right mobile solutions for specific application domains. On the other hand, the students will learn, from a business point of view, about the potential of mobile applications in leveraging new services, targeting new and wider customers’ markets and how this influences the design and development cycles of mobile apps.

This course aims at helping CSC and CCE graduate students in successfully establishing their master thesis. In fact, the students will be able to pick up a convenient master thesis topic and collaborate with a supervisor, to explore, read and analyze the underlying literature, to write a complete and clear master thesis proposal, then to successfully defend it in front of a jury. It also aims at helping the students in acquiring a broader sense of research and its underlying mechanisms as a long-term Ph.D. activity and then as a life career.

This course covers the following topics: An introduction to the system development process which links user requirements to the computer based system. This course will provide students with a basic exposure to the tasks and challenges facing today’s projects .This course emphasizes problem formulating and problem solving. Students learn how to analyze a problem domain and develop the appropriate analysis and design models to formalize the requirements using object oriented methods and appropriate theory.


This course covers the following topics: Description of general operating system concepts, an overview of computer architecture, elements of OS design, processes, concurrency, deadlock, memory management, CPU scheduling, file system, disk management, security and protection, distributed computing. Students after this course should have gained a wide knowledge in using Linux, and a good practical experience in programming C under the UNIX shell.


This course aims at helping CSC and CCE graduate students in successfully establishing their master thesis. In fact, the students will be able to pick up a convenient master thesis topic and collaborate with a supervisor, to explore, read and analyze the underlying literature, to write a complete and clear master thesis proposal, then to successfully defend it in front of a jury. It also aims at helping the students in acquiring a broader sense of research and its underlying mechanisms as a long-term Ph.D. activity and then as a life career.

"There is nothing more practical than a good theory." Lewin - 1952

his course covers basic theoretical principles embodied in automata and grammars. Topics include regular expressions, finite deterministic and non-deterministic automata, proof of non-regularity, context-free grammars and parsing, pushdown automata, closure properties, Turing machines, Church-Turing’s thesis, and decidability. This course also provides a quick introduction to complexity theory.

This course covers creation of web-based applications using one or more programming languages and related concepts. This course is designed to teach fundamental techniques required in developing both client-side and server-side web-based applications. This course covers web design and static web generation using HTML 5 and CSS, client-side programming with JavaScript, and dynamic web development using PHP and MySQL. This course will familiarize the learner with different tools and guidelines that might support the development process. Concepts covered by this course include but not limited to HTML, CSS, JavaScript, XML. Ajax, web servers, database engines, PHP, ASP and Web Services.

This course is offered to master students in Management Information Systems. It builds on top of the previous "Mobile Information Systems" course where the students are initiated to basic mobile development for the Android platform, namely hands-on the Android Studio, Android projects creation, running and debugging, basic GUI (with adaptation to various locals, screen sizes and resolutions), basic business logic and storing user settings using shared preferences. 

This course covers more advanced topics such as creating list view with a data adapter, data request from remote web services, the use of asynchronous tasks for multi-threading with GUI update, view recycler, more on fragments, shared preferences, SQLite, content providers and loaders.

This course provides theoretical and practical knowledge required to perform administration of computer systems and networks. It covers the fundamentals of system administration under Linux, with emphasis on principles that apply to all environments. 

Sys Admin Textbooks

This course outlines Moodle's features by providing examples of activities and resources.