Skip available courses

Available courses

Course objectives and learning outcomes:

On completion of this course, students should be able to: 

• Have a clear understanding of the difference between high and low level programming languages, their respective advantages and disadvantages, 

• Demonstrate knowledge and understanding of the fundamental relationships between basic elements of computer architectures, machine-level languages and high- level languages, 

• Write programs in assembler language (with an emulator of the 8086 processor, and then with NASM) and include them in high level language programs, 

• Install and use a Linux distribution on their computer, 

• Install and use a virtual machine on their computer.


Course objectives and learning outcomes:

This course is a programming language-oriented one. It is focusing on a new language for the students, Java, and all its related concepts and paradigm. As a new language for the 2nd year students, some topics close to some of Programming I and Programming II are needed to introduce this new language. This course is covering the following topics: syntax, basic methods, algorithms, data-types, object-oriented paradigm, console software, graphical user interface software. Even if this course is focusing onto programming language, some good software engineering practices will be developed.

Course objectives and learning outcomes:
• Students will develop an understanding of sorting algorithms.
• Students will develop an understanding of basic sorting algorithms: bubble sort, selection sort, insertion sort.
• Students will develop an understanding of integer sorting algorithm: radix sort.
• Students will develop an understanding of advanced sorting algorithms: merge sort, heapsort, quick sort.
• Students will develop an understanding of algorithm design techniques: divide and conquer, greedy method, dynamic programming.
• Students will develop an understanding of graphs, graph traversals and graph algorithms.