Skip to content. | Skip to navigation

Personal tools

Navigation

Teaching

Courses taught by Dr. Rui Dai

Classes

Engineering Research Center at the University of Cincinnati

EECE 7075: Principles of Modern Networking

This course introduces emerging technologies in modern computer networks, including software-defined networking, technologies for supporting user needs in terms of quality and service (QoS) and quality of experience (QoE), enabling technologies for the Internet of things (IoT), networking architectures for cloud computing, and advances in 5G wireless systems.

Credits: 3
Level: Graduate

Course Learning Objectives:

  1. Understand the concepts of software defined networks, network designs for supporting QoS/QoE, enabling technologies for the IoT, networking architectures for cloud computing, and key technologies in 5G mobile networks.
  2. Apply the knowledge of modern networks to implement network applications that can efficiently utilize services provided by the modern networking infrastructure.
  3. Evaluate the performance of different networking technologies and choose appropriate networking solutions for specific application requirements.

 

CS 6043: Computer Networking

This course introduces fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics to be covered include: network architectures, network applications, TCP/IP, flow control, congestion control, routing, medium access control, and wireless networking. Examples will be drawn primarily from the Internet (e.g., TCP, UDP, and IP) protocol suite.

Credits: 3
Level: Undergraduate and Graduate

Course Learning Objectives:
1. Comprehend layered communication architectures and services provided by each layer (in TCP/IP: application, transport, network, data link, and physical layers).
2. Understand the concepts of reliable data transfer, congestion control, flow control, routing, error detection and correction, medium access control, and how contemporary networking protocols implement these concepts.
3. Apply knowledge of computer networks to implement network applications that can efficiently utilize services provided by the Internet infrastructure.
4. Evaluate the performance of different networking protocols and choose appropriate networking protocols for specific application requirements.

 

EECE 4038C: Embedded System Design

This course introduces microcontroller-based embedded systems. The course starts with a review of digital systems and progresses into the architecture of microcontroller hardware using the PIC microcontroller family as an example. In addition to understanding the hardware architecture of the PIC microcontroller, the course introduces the concepts of programmable hardware and assembly language programming of the PIC microcontroller family. Finally, students learn to apply common features of embedded microcontroller including Analog-to-Digital converters, interrupt driven programming, counter/timers, and I/O pin reconfigurations.

Credits: 3
Level: Undergraduate

Course Learning Objectives:
1. Identify applications that are appropriate for implementation using microcontrollers.
2. Identify the major architectural components of a PIC microcontroller and understand their purpose.
3. Demonstrate using a commonly available CAD environment the ability to write, debug, and test assembly language programs for the PIC microprocessor family.
4. Design, verify and document an embedded system based solution to a general problem statement that utilizes common architectural features of the PIC microcontroller (may include digital/analog inputs, digital outputs, counter/timers, and interrupt driven program flow).

 

EECE 6029: Operating Systems

The goal of this course is to enable students to comprehend the function, design, and integration of the parts of an operating system, evaluate different operating system algorithms, and apply the knowledge of multi-process programming to efficiently utilize services provided by an operating system.

Credits: 3
Level: Undergraduate and Graduate

Course Learning Objectives:
1. Comprehend designs and architectures of modern operating systems and major subsystems---schedulers, memory systems, file systems and I/O systems.
2. Apply knowledge of multi-process programming to synthesize programs that can efficiently utilize services provided by OS, including synchronizing and interprocess communication.
3. Analyze if a group of processes can deadlock by applying deadlock detection and avoidance theories and algorithms.
4. Evaluate and choose different OS algorithms (e.g., scheduling algorithms) and services for specific applications.
5. Understand the OS design issues related to modern computer architecture, including multiprocessor systems and distributed systems.