Basic Discrete Mathematics: Linear recurrence, Counting principles, mathematical induction, relations and function, equation sets, predicate and propositional logic.
Digital Logic: Minimization, Logic functions, Design and synthesis of sequential circuits and combinational; Number representation and computer arithmetic.
Computer Organization and Architecture: CPU control design, Machine instructions and addressing modes, Memory interface, ALU and data-path, I/O interface, Instruction pipelining, Main memory and Cache, as well Secondary storage.
Programming and Data Structures: Programming in C; Recursion, Functions, Parameter passing, Binding; Scope, Abstract data types, Stacks, Arrays, Queues, Trees, Binary search trees, Linked Lists, Binary heaps.
Algorithms: Analysis, Notions of space and time complexity, Asymptotic notation, Average and Worst case analysis; Design: Greedy approach, Divide-and conquer, Dynamic programming; Tree and graph traversals, Spanning trees, Connected components, Shortest paths; Sorting, Hashing, Searching. Asymptotic analysis of time and space, upper and lower bounds, Basic concepts of complexity classes NP, P, NP-hard, and NP-complete.
Operating System: Threads, Processes, Inter-process communication, Synchronization, Deadlock, Concurrency, CPU scheduling, File systems Memory management and virtual memory.
Databases: ER-model, Database design, Relational model, Query languages (SQL), File structures Transactions and concurrency control.
Information Systems and Software Engineering: Requirement and feasibility analysis, Information gathering, data flow diagrams, input/output design, process specifications, process life cycle, planning and managing the project, coding, design, testing, and implementation, maintenance.