In this course, students understand the basic concepts of computer security. Classical techniques are first presented (like Play Fair, Hill Cipher, ... etc.), then we move to Data Encryption Standard (DES) and Advanced Encryption Standard (AES).
Also, Public-Key cryptography and Key Exchange methodologies are explained. Students are asked to implement some of the presented algorithms.
I initiated having a unit test project to automate and auto-grade the delivery of the projects.
Programming Language used: C# and Python.
In this course, students understand the basic concepts of analysis using Big-Oh notations. Also, design paradigms are explained (Divide and Conquers, Dynamic programming and Greedy algorithms). At the end of the course, students are asked to implement a project to show how efficient algorithms can differ from naïve ones. For example, projects can be implementing RSA algorithm using Karatsuba Multiplication and Big Integers or Image quantization using K-Means and so on.
Programming Language used: C++, C# and Java.
In this course, Kernel mail modules are explained to students mai
nly CPU Scheduling, Memory Management and Shared Resources handling. Through the course students implement memory management module in a simple but real operating system.
Programming Language used: C.
In this course, Assembly language based on Intel386 processor
is explained to students to help them and guide them understand low level concepts.