18-642 FAQ
Fall 2024
[Main Course Page]| [FAQ] |
[Policies]Units: 12
Course 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 three or four related topics each week,
involving a combination of solo programming assignments, small-group
interactions, and individual homeworks 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. The course organization is inverted, with
lectures pre-recorded and synchronous remote class meetings for guest speakers,
Q&A, individual student presentations, and discussions.
Undergraduate students are required to take 18-349 prior to enrolling in this
course.
This is designed to be a first-semester MS course. Graduate students are
strongly encouraged to take 18-613/15-213/15-513/18-213 or another course
imparting software system skills before or concurrently with this course.
Frequently Asked Questions:
- What is the attendance policy?
- The class is optimized for 100% remote delivery. For Fall 2024 it is
scheduled as Remote Only with all course meetings held via Zoom. Synchronous
attendance at weekly class meetings is strictly required. There will be no
recording of class meetings under any circumstance.
- Conflict policy:
- All students should plan on attending the live session, which is
approximately 3 hours held once weekly on Thursday night (Pittsburgh time).
Students in remote time zones should still plan on attending live class
meetings (it is only once per week).
- Students should not enroll for a conflict unless they have permission from
the other instructor to miss the OTHER class during the conflict. This might be
viable if the other class only has recitations or optional sessions during the
conflict period. Attendance is this course is strictly required and substantive
part of the course grading criteria.
- Can I take this course in the same semester as 18-xxx? It's my first
semester and I don't want to overload.
- Yes.
- This course is specifically designed to be accessible to first-semester
students in our MS program who are taking 18-613 or other intro courses
concurrently.
- The programming assignments ramp up gradually and deal more with coding
style, not advanced language features. So it is a complement to 18-613. The
workload is moderate, targeted to a median of 12 hours per week of total
student effort for the average student enrolled in the course, in keeping with
the 12 unit course designation. (Previous years have been within one hour of
that target on average.) You'll get exposure to good coding style, an
introduction to software safety, and an introduction to computer security with
an embedded system/IoT emphasis.
- Is class attendance required?
- Yes. Attendance at a live session is required weekly.
- Beyond a small "free absence" allowance, absences are only
forgiven if due to severe medical conditions or other true emergencies. 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
additional absences from lectures beyond the "free" absences built
into the grading formula. Students with excessive absences will not earn
credit for the course. See the course grading policy for details.
- What kind of in-class participation is required?
- All live class meetings will use Zoom. Students are responsible for
ensuring they have adequate bandwith available for live sessions including
video. Audio-only participation is strongly discouraged and requires explicit
instructor permission, usually only granted for a single exceptional situation
during the semester.
- Students are expected to have a camera enabled with their complete
face in-frame during all live meetings to enable better instructor feedback to
identify potential doubts. (Laptop or webcam preferred; cell phone camera
acceptable if need be.)
- Students will be expected to do a weekly small-group exercises at flexible
times other than the class meeting. We arrange the group members, changing each
week.
- Students will be expected to do a brief, low-stakes presentation of a
homework or project assignment more than once (typically 1 to 3 minutes in
length; live or pre-recorded depending upon circumstances and the needs of
running the class).
- In-class or pre-recorded presentations are low stakes events as part of the
ordinary class. There is no need to dress up, and they are not formal
make-or-break project reports.
- Grading for presentations will be based primarily on good faith
participation and having something relevant to say, not on public speaking
skills. It is understood that this will be the first semester of US class
attendance for many international students. We only expect English verbal
skills comparable to your spoken language test scores used for university
admission.
- How does this compare with other courses?
- 18-349: That is an intro course that concentrates on an embedded
platform. 642 builds on this knowledge. 642 does not use an embedded hardware
module, but rather concentrates on higher level concepts and software quality.
- 18-648: That course concentrates on writing code in the context of a
real time operating system. 642 is primarily concerned with other aspects of
the system. Taking both 18-648 and 18-642 at some point is a good idea if you
want to specialize in embedded systems.
- What kind of workload should I expect? Is this a "killer
project" course?
- This is a 12 unit course and we adjust to keep things on track for an
average 12 hour per week workload (plus or minus 1 hour depending on semester;
refers to the median student in the class; individual student experiences will
vary).
- While progressively more advanced project work is required, there is no
"killer" project unless you make it into one on your own. The
deadlines are relatively small chunks rather than a big project deadline.
However, the projects do build upon each other, so it's important
to take each project seriously and complete it on time. Slacking on the early
projects is likely to come back to bite you later, although later projects are
designed to make it reasonable to catch up with minimal penalty if you have one
bad week.
- The project assignments are primarily about code quality and design
quality. There is a safety project component related to run-time monitoring.
There isn't a security project per se, although code quality is a foundation
for both safety and security.
- 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. Students are not graded on their
ability to report 12 hours; this is a no-blame reporting requirement to permit
continuous improvement of course workload distribution.
- What kind of technical background do I need to have?
- We assume you have taken an "introduction to microcontrollers"
course at some point, and know general software systems concepts. If you are a
CMU undergrad this equates to 18-240 and 18-349 (or equivalent) knowledge. If
you are a grad student you are responsible for ensuring you have this
knowledge. 18-613 will help, but you will additionally need some software
system skills you are responsible for filling in yourself. Detailed computer
hardware/computer architecture knowledge is not required for this course.
However, you should know the basics of how computer hardware works.
- If you are not proficient at using command line tools and scripting or
other software development processes, we suggest you watch lectures 1-8 of the
MIT "Missing Semester" class before the start of the semester:
https://missing.csail.mit.edu/
- You will be expected to read, write, and modify code in C using Unix
development tools (C++ is even better, although we don't go very deep into
that). Limited TA help will be available, but you're supposed to already know
how to do the basics. If you've only ever used Windows, we strongly suggest you
complete a Unix command line tutorial and have some familiarity with how
virtual machine images work before classes start.
- A significant fraction of the homeworks will be concepts and discussion
rather than writing code. However, you will have to be able to read and write
code for this course, and in particular the projects. The code will be
primarily C and C++. We'll use Robot Operating System (ROS 1) to provide a
simulation framework, but you don't need to know much about this unless that's
something you want to explore on your own.
- We will make available an ECE server running virtual machine software that
can be used for all assignments. You are welcome to run them on your own
computer, but we can't guarantee compatibility for all systems. In particular,
it often takes a few weeks to sort out Apple laptops due to changes with their
equipment that tend to break commercially available virtual machine support.
Sorting that out is up to you, but generally TAs and classmates have been able
to help students in previous years who had issues, and the course server is
available as a backup.
- What are the exams like?
- Trick question -- there are no exams. (No in-class exams; no final exams.)
- There is a low-stakes on-line quiz after every lecture. Most students get
perfect scores on most or all quizzes. You get two tries for a good score on
each quiz; use them wisely.
- What about project teams?
- While there are weekly assignments that require collaboration with a small
student group, there will be no lab teams or course project groups for this
course. You're expected to do all the work on your own unless an
assignment specifically permits collaboration.
- There are numerous small-group peer review assignments in which you can get
feedback on your project code from class-mates. Making changes to fix issues
identified in peer review is the primary method of collaboration that is
specifically permitted. However, peer reviews are not for the purpose of
telling you how to solve a problem; they are limited to pointing out that you
have something that should be fixed.
- See the course policy for collaboration. In simple terms, it's OK to get
help from class-mates on general understanding or getting tools working, but
you are expected to do your own homework and do your own software development.
So if you are thinking of coasting through by getting a lab partner to do all
the work, you should pick a different class.
- What is the grading approach?
- Grading for most aspects of the course is generally based on completing
substantially all the course assignments satisfactorily and on time. Grades are
based on meeting specific criteria for each different type of grading category
rather than a blanket "points" system.
- The grading approach details are in the course policy info since the
arrangement is likely different than most courses they are used to.
- What is the textbook?
- There is no textbook. In some cases there is required reading, but it is
all freely available.
- We do require that every student have a tablet or laptop computer that can
be used for projects and live class participation.
- The slide handouts are available on-line.
- Virtually all the course lectures are available on-line both via Canvas,
and most are on YouTube.
- I'm on the wait list. Will I get in?
- It depends, and I can't predict how that will go until classes start. There
is a fixed maximum capacity set by the limitations of TA availability that we
can't exceed. Many students are initially on the wait list to give incoming MS
students first shot, and are admitted the first week of class when available
seats can be filled from the wait list. Whether you get in from the wait list
usually depends on how many students drop after classes start due to
"shopping" for courses, and that varies wildly from semester to
semester.
- If you are on the wait list expect an e-mail from me during the first week
of class with an update on how that looks.
- How do I contact the professor or TA?
- Send administrative e-mail to:
ece642-staff@lists.andrew.cmu.edu
which is sent to both the instructor and TAs. If there is a specific recipient
please indicated that on the first line of the e-mail, but send it to everyone
regardless in case that person cannot respond.
- If you have a question about course technical content, "doubt,"
grading question, or other question that requires a technical response please
come to scheduled office hours. Most office hours are remote, and for any
in-person office hours that might be scheduled students have the option to use
Zoom to attend remotely as well.
All of this is subject to change to ensure that the course is of the highest
quality possible given resource constraints, but the syllabus and policies are
intended to be reasonably firm as of the first day of classes.
Updated 10 June 2024