18-642 Embedded System Software Engineering
Carnegie Mellon University,
Lectures: MW 12:30-2:20
Recitation: Friday 12:30-2:30
Description: In a very real sense, embedded software is what makes
our everyday world function. From self-driving cars to chemical processing
plant equipment, and from medical devices to the electric grid, embedded
software is everywhere. You already know how to write code for a
microcontroller. Now, learn software quality, safety, and security skills that
are required to make embedded systems that can handle the messiness of the real
world. This course provides in-depth coverage of the topics that are essential
to the success of embedded software projects based on case studies of industry
project teams that have suffered or failed. Students will learn about a variety
of topics including: lightweight but high quality embedded software processes,
technical best practices for embedded software, effective testing and
validation, causes of software system failures, software for safety-critical
systems, and embedded-specific aspects of software security. The material will
generally be broken up into a set of four related topics each week, with one
assignment per topic weekly, involving a combination of programming
assignments, tool use experiences, and research questions to get hands-on
experience at dealing with the types of problems that are encountered in
industry embedded projects. We assume you already know how to code in C and
understand the basics of microcontrollers. This course is about getting you
ready to build industry-strength embedded projects.
Undergraduate students are required to take 18-349 prior to enrolling in this
Graduate students are strongly encouraged to take 18-600/15-213/15-513/18-213
before or concurrently with this course.
18-348 is an acceptable pre-req substitute for 18-349.
Fall 2017 status & FAQ
Please don't e-mail the instructor asking for more information. Any information
that is available will be posted here, with a significant update by the first
day of classes.
- This course is in some sense replacing 18-649, but it is an entirely new
course. There is some content overlap with old 18-649, but it will be
structured much differently. This course has nothing at all to do with the
previous offerings of 18-642 several years ago.
- Students will be expected to do informal ~5 minute oral presentations in
class on a regular basis (e.g., stand up and present their homework answer in
the context of in-class discussion). Grading for this will be based primarily
on good faith participation and having something relevant to say, not on public
speaking skills nor on the fine points of English language skills. No special
preparation for these presentations will be required beyond the scope of normal
class homework assignments.
- Workload is expected to be relatively even across the semester, with no
huge end-of-semester project deadline. Students will report effort weekly with
a goal of adjusting course content to target about 12 hours per week median
student effort including class attendance time. Actual student effort will
probably vary, with some spending fewer hours and some spending more hours.
- This course is primarily intended to be a first-semester MS graduate
student course. Attendance is required, and a significant portion of the
learning will occur based on in-class interactions. If you expect to miss many
class meetings due to job hunting, you should not enroll. Plant trips and
interviews are not acceptable excuses for excessive absence from lectures.
- There is no semester-long project. There might be a slightly larger
"final" hands-on assignment, but in general projects are expected to
be non-cumulative smaller chunks. Some assignments will require writing or
modifying code in C and using Unix or Windows development tools. A significant
fraction of the homework will be understanding concepts rather than writing
- Exams are still being defined, but are expected to be based on incremental
multiple-choice testing. No final exam.
- Significant amounts of the work will be individual. So if you are thinking
of coasting through by getting a lab partner to do all the work, you should
pick a different class.
- It is impossible to guage student interest and your chances of being
admitted if you end up on the wait list. If you really want to take the course
you should sign up and show up at the first class meeting even if you are on
the wait list. If there is significant student demand beyond the enrollment
budget we will ask the department to re-run the course in Spring 2018. (There
is no guarantee that will happen, in which case the course will be re-run with
a larger enrollment in Fall 2018 assuming availability of a TA pool.)
- We probably will not use microcontroller hardware development kits since
you should have already seen that in pre-req courses. Most or all work will be
more conceptual and software-centric, and will be done on ECE department
servers. (You can use your own computer and in some cases your favorite tools
if you can get the tools working, but support will be officially provided for
ECE department servers that have tools pre-installed.)
- Textbooks and detailed schedule, policies, etc. are TBD, and will be
finalized in August 2017. We do not expect the textbook cost burden to be
- If you have a partial conflict with Friday recitation that can probably be
worked out. You should plan to be at recitation for either the first or second
hour of the time slot. This will be worked out after the first class meeting.
- All of this is subject to change, but the syllabus and policies will be
reasonably firm as of the first day of classes.