Courses taught at Wright State University
- Asymptotic Analysis and Algorithm Analysis
- Stable Matching
- Greedy algorithms
- Divide-and-conquer recurrence relations; Master Theorem
- Divide-and-conquer algorithms
- Dynamic programming algorithms
- Network flow
- Basic knowledge of computational complexity; NP-Complete Problems
- Introduction to Parallel Computing
- Overview of GPU Architecture
- Introduction to CUDA
- CUDA Parallelism Model
- Thread Scheduling
- CUDA Memory Model
- Warp and Thread Execution
- Parallel Reduction
- Parallel Prefix Sum (Parallel Scan)
- Histogram
- Sparse Matrix Vector Multiplication
- CUDA Streams
- Introduction to OpenCL
- Parallel Sorting
- Performance Optimizations
- Arhcitecture Overview -- Superscalar, VLIW, Vector Machines, Multiprocessor, Multicomputer
- Memory Hierarchy, Cache Organization
- Control Flow Graph, Basic Block
- Data Dependences
- Data Flow Graph
- List Scheduling
- Software Pipelining
- Liveness Analysis
- Register Allocation
- Static Single Assignment -- SSA
- How to identify a loop
- Loop Transformations -- Fusion, Distribution, Interchanging, Unrolling, Skewing.
- Improve Data Locality by Loop Transformations
- Hardware/Software Prefetching
- Overview of Security
- Security in OS
- Common Security Attacks
- Information Security Basics
- Classical Encryption Techniques
- Block Ciphers and DES
- Introduction to Finite Fields
- Advanced Encryption Standard
- Introduction to Number Theory
- RSA Cryptography
- Key Management & Other Cryptosystems
- Hash Functions & Data Integrity
- Digital Signature