If you have any question, suggestion, or new idea while taking my course, please come to talk with me. My office is E-114 (Engineering building).
ECE 432/532 Parallel programming
The current trend in computing and embedded architectures is to replace complex superscalar architectures with many processing units connected by an on-chip network. Modern embedded, server, graphics and network processors already include tens to hundred of cores on a single die. Moreover, the development of such multi-core platforms is driven by the increase of highly parallel/multi-threading and demanding applications such as complex system simulation and machine learning. In this course, we will discuss many key concepts used in modern parallel computer architectures explore parallel programming frameworks such MPI, Pthreads and OpenMP.
ECE 430 Principles of system programming
What is an operating system and how can we explore its properties? Can we customize some of its properties in order to boost specific application types? Operating systems are the cornerstone of modern computing systems and require tight collaboration between hardware and software. This course focuses on the principles of operating systems (Unix, Windows) such as processes, deadlocks, CPU scheduling, memory management, file management, sockets etc.
ECE 321 Introduction to software engineering
How can you effectively develop an application? Which abstract data types should you utilize and what is the trade-off? Procedural or Object Oriented Programming? These are some of the most important questions to be answered in this course. As the complexity of modern applications and problems increases, developers should design efficient solutions while taking into considerations performance, scalability and memory consumption of their solutions. The focus of this course is on the design and trade-off of abstract data types under procedural (C) and Object Oriented Programming (C++).
ECE 329 Computer architecture
The interaction between software and hardware at multiple levels requires deep understanding of the computing fundamentals. Computer organization is a very important and basic course for computer engineer students. The course, among others, focuses on computer abstractions and technologies, processor design details, memory hierarchy, and computer arithmetics.
ECE 511 Software Hardware Co-design for Deep Neural Networks
Analysis of deep learning techniques such as deep feedforward networks, regularization, optimization algorithms, convolutional networks, and sequence modeling. Utilization of machine learning frameworks such as Tensorflow and Pytorch. Investigation of hardware architectures for machine learning applications such as GPUs, TPUs, and systolic arrays.