Teaching

Teaching is a passion for us and not a burden to our research. We always put students in the center of our efforts and never feel satisfied if we have the feeling that some students are not getting what we teach. No student should be left behind. It is better to do less and every student gets it, than cover a huge amount of material that no student understands.

We try to achieve our goals by keeping students awake and have them participate to the class through random questions at the beginning and during the class. This gives us a way to quickly judge students’ progress and better adjust our teaching to match the class behavior, which varies from semester to semester.

Furthermore we always try to link class content to real-life applications by means of real-life projects examples and case studies. There is always a core content for each class, which can be covered in 2/3 of the semester. Therefore we spend the required amount of time to have students learning and fully understanding the core content, and use the rest of the term for more advance stuff.

Assessing students in a fair way that reflects topic content and the expectation of the classes is very important. The right mixture of homework, class participation, midterm and final exam must be elaborate and made aware to the student. Below is the list of class taught in a rotation, and projects and seminar provided in our group.

Courses

Assessing students in a fair way that reflects topic content and the expectation of the classes is very important. The right mixture of homework, class participation, midterm and final exam must be elaborate and made aware to the student. Below is the list of class taught in a rotation, and projects and seminar provided in our group.

Adaptive Systems (CSCE 5013)

A senior level/graduate-level course that gives student the basics of autonomic systems and have them design a workable adaptive system, conceptually and technically, based on the partial reconfiguration capabilities of FPGAs.

Advanced Operating Systems (CSCE 5313)

Concurrent processes and process communication; mutual exclusion and synchronization principles; kernel philosophy; resource allocation and deadlock; and case studies of specific operating systems.

Computer Architecture (CSCE 4213)

The architecture of modern scalar and parallel computing systems. Techniques for dynamic instruction scheduling, branch prediction, instruction level parallelism, shared and distributed memory multiprocessor systems, array processors, and memory hierarchies.

Computer Organization (CSCE 2214)

Presents the relationship between computing hardware and software with a focus on the concepts for current computers. CPU design topics are covered including various techniques for microprocessor design and performance evaluation.

Digital Design (CSCE 2114)

Introduction to the hardware aspects of digital computers, logic gates, flip-flops, reduction, finite state machines, sequential logic design, digital systems, software design tools, hardware description language (VHDL), and implementation technologies.

Embedded Systems (CSCE 4114)

The architecture, software, and hardware of embedded systems. Involves a mixture of hardware and software for the control of a system (including electrical, electro-mechanical, and electro-chemical systems). They are found in a variety of products including cars, VCRs, HDTVs, cell phones, pacemakers, spacecraft, missile systems, and robots for factory automation.

Operating Systems (CSCE 3613)

An introduction to operating systems including topics in system structures, process management, storage management, files, distributed systems, and case studies.

Real-Time Operating Systems (CSCE 5013)

A senior level/graduate-level course that covers real-time systems and the issues related to operating system design for those systems.