Lecture Topics
Lectures topics in COSC 198 were chosen primarily to introduce new material that would be directly relevant to subsequent research paper assignments, and to laboratory projects. It corresponds roughly to the \Core" component of CSE 321 developed at UB. Some intentional overlap with prior courses was necessary because of the diverse backgrounds of the students. Engineering majors had already worked with feedback control systems, but computer science majors had not. Conversely, computer scientists had dealt more extensively with asynchrony than the engineers. Some of these distinctions are particular to the respective curricula at MU, and would not be the rule at other institutions. Given that the primary Embedded Xinu laboratory platform is a consumer networking appliance, student interest naturally turned toward embedded networking technology as laboratory projects were brainstormed. In the nal third of the term, much of the lecture material was devoted to intermediate-level networking topics, to support this direction. This took the spot of the \Extension" segment of the curriculum developed at UB.
Lecture topics in the term included: characteristics of embedded systems; characteristics of real-time systems; soft vs. hard real-time; cyclic, asynchronous, and unpredictable systems; control systems and feedback; digital sampling, error, and resolution; scheduling and schedulability analysis; worst-case execution time analysis; case studies of real embedded/real-time systems; and networking (Ethernet, IP,ICMP, UDP, DHCP, TCP).
Seminar Topics
Interwoven with the lecture component of the course, students worked alone and in pairs to read, present, and lead class discussions of current research in embedded systems and related areas. Working from an initial list of possible papers, and then branching out on their own later in the term, students drew papers from such venues as PLDI and SOSP, LCTES, ASPLOS, PODC, USENIX, and SIGCSE. Topics covered included: embedded, real-time operating system kernels; ne-grained locking and lock-free synchronization; designing against interrupt-driven overload; memory protection and isolation in embedded processors; general purpose computing with GPUs; optimizing embedded networking protocol stacks; resource bound and program analysis in embedded systems; and other embedded system laboratories and curricula. While some of these topics proved to be too ambitious to cover thoroughly in this level of course, most provoked lively class discussion of the challenges facing modern embedded system designers.
<<Previous Next>>