| | Definition of an algorithm; Algorithm design and techniques, such as sequential versus divide-and-conquer; Algorithm analysis; Concept of basic operations; Concept of worst, best, and average case analysis; Complexity analysis: big O, Omega and Theta notations; Recurrence equations and recursive algorithms; Searching and sorting algorithms; Concept of graphs; Graph algorithms. | Undergraduate Level - Third Year | | | Introduction, Hardware and Software Concepts, Processes and Threads, Synchronous Concurrent Execution, Deadlock and Indefinite Postponement, Processor Scheduling, Physical and Virtual Memory, Disk Performance Optimization, Performance and Processor Design, Multiprocessor Management, Distributed Systems. | Undergraduate Level - Fourth Year | | | Study of parallel processing hardware, memory, buses, multi-stage networks. Pipeline, array and associate processor, bus based systems, cross-bar systems, grids, systolic arrays, trees, and data-flow architecture. Processors for parallel architectures, memory structures, cache memory, bus structures. Arbitration and synchronization. Dynamically reconfigurable architecture. | Graduate Level - Master | | | The course is centered in three concepts: Architectures, Algorithms and Programming. Parallel and Distributed Architectures: Parallel and Distributed computer taxonomy, example of Parallel and Distributed computers, fundamental communication operations, and performance metrics. Parallel algorithms: design and analysis of parallel algorithms with emphasis on sorting, matrix problems, and graph problems. Parallel programming: types of parallelism, parallel programming paradigms, message passing programming, data and parallel programming. | Graduate Level - Master | | | Main concepts of computer architecture; Hardware components of a computer; Instruction set: instruction formats, encoding of instructions, types; Execution unit: registers design, combinational shifters, ALU, division and multiplication algorithms; Control unit: register transfer language, hardwired and microprogrammed control unit; Memory unit: RAM, cache memory, associative memory, virtual memory; Input/output processors; Introduction to Assembly Language; Introduction to multiprocessor systems and parallel processing. | Undergraduate Level - Third Year | | | Introduction to high-performance computing, processor architectures, memory systems, data and parallel decompositions, parallel languages and architectures, multiprocessors, multi-computers; routing topologies; shared memory and passage passing parallel processing, PRAM model (exclusive versus concurrent reads and writes) and sample applications. | Undergraduate Level - Fourth Year | | | Students will study advanced operating system topics and be exposed to recent developments in operating systems research. In addition to being conversant in classic and recent research papers, this course aims to teach students to read research papers critically, formulate new research questions, and evaluate these questions experimentally. A study of specific topics of modern distributed and real-time systems, the theory behind them, and their implementation. Topics may include advanced concepts in distributed systems, wireless sensor networks, resource management in multi core and in distributed systems, and memory management, protection and security. | Graduate Level - PhD | | | This is an advanced graduate level course on algorithms, with the emphasis on computational problems that are central to both theory and practice, and on developing techniques for the design and the rigorous analysis of algorithms and data structures for such problems. It discusses topics such as network flows (max flow and min-cost flow/circulation), data structures (Fibonacci heaps, splay trees, dynamic trees), linear programming (structural results, algorithms), dealing with intractability, approximation algorithms, dealing with large data sets and computational geometry. | Graduate Level - PhD | | | This course provides strategies of algorithms synthesis and analysis. Design methodologies of classical algorithm categories such as: divide-and-conquer, greedy method, dynamic programming, search and traversal, backtracking, and branch-and-bound. Computational complexity and important theoretical results from lower-and upper-bound studies, NP-hard, and NP-complete problems will be addressed. | Graduate Level - Master | | | This course examines the advances of sequential computers for gaining speed and application of these techniques to high-speed supercomputers of today. Programming methodologies of distributed and shared memory multiprocessors, vector processors and systolic arrays are compared. Performance analysis methods for architectures and programs are described. Research papers of high impact published recently in the literature will be provided as reading assignments. | Graduate Level - PhD | | | This course presents the fundamental concepts of programming using C++. It covers the basic structures of the programming tools such as variable names; data types; control structures; arrays; and functions. | Undergraduate Level - First Year |
|