Priya Narasimhan, and pictures of some of her research projects (football engineering, YinzCam, Trinetra)
TEACHING

FAQ on Embedded Systems Curriculum at CMU
Find answers to commonly asked questions about 18-348, 18-349 and 18-549. Please email me if your question is not listed here, and should be.

18-848d: Sports Technology (senior- and graduate-level)
Offered: Fall 2009.
This special topics course comprises a semester-long project experience geared towards the development of skills to design realistic and practical embedded/mobile systems and applications that enhance various aspects of the training, coaching, playing and scouting of different sports, including football, hockey, baseball, soccer, etc. The lecture content will cover background material intended to complement the project work, and will also leverage lessons learned from other sports technology, the physics of sports and real-world lessons and guest lectures from experts in the field.

18-349: Embedded Real-Time Systems (junior-level)
Offered: Fall 2008, Fall 2007, Fall 2005, Fall 2003, Fall 2002
Not offered: Fall 2009.
This practical, hands-on course introduces the various building blocks and underlying scientific and engineering principles behind embedded real-time systems. The course covers the integrated hardware and software aspects of embedded processor architectures, along with advanced topics such as real-time, resource/device and memory management. Students can expect to learn how to program with the embedded architecture that is ubiquitous in cell-phones, portable gaming devices, robots, PDAs, etc. Students will then go on to learn and apply real-time principles that are used to drive critical embedded systems like automobiles, avionics, medical equipment, the Mars rover, etc. Topics covered include embedded architectures (building up to modern 16/32/64-bit embedded processors); interaction with devices (buses, memory architectures, memory management, device drivers); concurrency (software and hardware interrupts, timers); real-time principles (multi-tasking, scheduling, synchronization); implementation trade-offs, profiling and code optimization (for performance and memory); embedded software (exception handling, loading, mode-switching, programming embedded systems). Through a series of laboratory exercises with state-of-the-art embedded processors and industry-strength development tools, students will acquire skills in the design/implementation/debugging of core embedded real-time functionality.

18-549: Design of Embedded Systems (senior-level capstone)
Offered: Spring 2009, Spring 2008, Spring 2007
This capstone course comprises a semester-long project experience geared towards the development of skills to design realistic and practical embedded systems and applications. Students will work in teams on an innovative project that will involve the hands-on design, configuration, engineering, implementation and testing of a prototype of an embedded system of their choice. Students will be expected to leverage proficiency and background gained from other courses, particularly with regard to embedded real-time principles and embedded programming. The project will utilize a synergistic mixture of skills in system architecture, modular system design, software engineering, subsystem integration, debugging and testing. From inception to demonstration of the prototype, the course will follow industrial project practices, such as version control, design requirements, design reviews and quality assurance plans. The initial lecture content will cover background material intended to complement the project work. The remainder of the course will consist of regular team presentations of key project milestones, current project status, a final project presentation and functional demonstrations of various subsystems, even as the entire prototype is being developed.

18-749: Fault-Tolerant Distributed Systems (graduate-level)
Offered: Spring 2006, Spring 2005, Spring 2004, Spring 2003, Spring 2002
Not offered any more.
The course provides an in-depth and hands-on overview of designing and developing fault-tolerant distributed systems. The course covers both the fundamental and advanced concepts of dependability, including replication, atomic multicast, group communication, consistency, checkpointing, transaction processing and fault injection, along with industrial standards and real-world practices for achieving high availability and fault-tolerance. Additional topics include the practical trade-offs and inter-relationships between fault-tolerance and other properties, such as real-time and performance. The lecture concepts are complemented through a semester-long hands-on project that involves the design, implementation and empirical evaluation of a distributed fault-tolerant, high-performance distributed system. To introduce students to the state-of-the-art technologies, the project emphasizes the use of object-oriented middleware, such as CORBA and EJB.

Last updated: 7 September 2009, Priya Narasimhan