Course 1: Embedded System Fundamentals, Spring
These modular courses are designed for students who do not have a proper background for the subsequent courses in the Real-Time Embedded Systems sequence. The Spring offering consists of three one-credit hour courses. Students should take only the necessary courses and earn credit accordingly.

EECE 533, Section C: Real-Time Electronics

Hours: 1 CR, Spring

Embedded systems designers are often required to interconnect basic hardware devices to core microprocessors. Such devices include memory (RAM and ROM), DIP switches, LEDs, and peripheral device ICs in the same and/or different processor families. This course covers the basics of hardware interconnections and includes the following topics:

1. Introduction to number systems and Boolean logic

2. Design and implementation of gate level circuits (also covers logic family characteristics, such as TTL and CMOS device characteristics) and PLD (Programmable Logic Devices), and address decoding

3. Introduction to finite state machines and their implementations using logic gates and flip-flops.

This course is not available to students with credit in EECE 241.

Pr.: PHYS 113 or PHYS 213.

CIS 522, Section A: Introduction to Real-Time Data Structures

Hours: 1 CR, Spring

Implementation of many parts of micro-kernels and network protocols is based on fundamental data structures. In this module, we intend to cover basic data structures such as stacks, queues, lists, and priority queues and algorithmic techniques for sorting, searching and hashing. We will emphasize modularity and reuse whereby existing data structure implementations can be specialized to derive more specialized data structures. We will also introduce the concept of object-oriented design and interface specifications. This course is not available to students with credit in CIS 300.

Pr.: C or C++ programming.

CIS 523, Section B: Concurrent Programming Fundamentals

Hours: 1 CR, Spring

Under an asynchronous embedded-system environment where the system controls multiple devices and responds to interrupts from various peripherals, concurrent programming is more appropriate than single threaded programming. Produces concurrent programming techniques based on message passing primitives (send/receive) and shared memory primitives (semaphore based P/V operations and Monitor based wait/signal operations).

Pr.: C, or C++ programming and CIS 300 or CIS 522.

Course 2: Real-Time Embedded Systems I, Fall
The following courses are to be offered each Fall . The schedule and place may change but the overall structure remains the same. In this course, students implement simple but complete real-time embedded systems.
The course consists of three modules:

CIS 621, Section A: Real-Time Programming Fundamentals

Hours: 1 CR, First Five Weeks, Fall

Relationship between C/C++ constructs and corresponding assembly code generated by compilers. Introduction to special techniques used to implement microcontrollers, such as initialization of programmable CPU modules/peripheral devices, techniques to link assembly and C/C++ codes, producing ROM-able code and EPROM burning/Flash programming.

Pr.: C, or C++ programming and either CIS 300 or CIS 522.

CIS 622, Section A: Real-Time Operating Systems

Hours: 1 CR, Second Five Weeks, Fall

Basic real-time operating systems concepts and services; interrupt processing; process and thread models; real-time software architectures and development environments. Detailed study of the design and implementation of real-time applications using real-time operating systems. The focus will be on commercial real-time operating systems/development environments, including vxWorks/Tornado and pOSEK/pOSEKSystem.

Pr.: CIS 621

EECE 633, Real-Time Embedded Systems

Section A:

Hours: 1 CR, Third Five Weeks, Fall

This module deals with the interconnection of complex peripherals, such as CAN networks, DA/AD converters, and Timers. Students implement device drivers and applications on top of real-time operating systems and bare hardware. Students build simple, but complete, distributed real-time embedded systems.

Pr.: CIS 621 and CIS 622.

Course 3: Real-Time Systems, Spring
CIS 721, Section A: Real-Time Systems

Hours: 3 CR, Spring

The design of hard real-time embedded systems, including language and operating system support, scheduling theory, schedulability analysis, fault tolerance, and design tools.

Pr.: CIS 520 or (CIS 622 and EECE 633).

Course 4: Real-Time Embedded Systems Design, Spring
EECE 733, Section A: Real-Time Embedded Systems Design

Hours: 3 CR, Spring

Capstone design course.

Pr.: CIS 520 or (CIS 622 and EECE 633).
Co-requisite: CIS 721.