This web page should help answer common questions about 18-348 and the
difference between that course, 18-349, and 18-648.
Please read this FAQ in its entirety before e-mailing me with
questions. Thanks!
-- P. Koopman, instructor
Here is the course description:
18-348 (Dp, Co)
Embedded System Engineering
Fall: 12 units
Embedded computing applications far outnumber desktop computers, with billions of microcontrollers produced worldwide each year. Embedded systems vary tremendously, from the single 8-bit processor in a thermostat, to high performance processors in a digital camera, to dozens of networked processors in an automobile. Despite this diversity of applications, there are core technology and system-level skills needed by any embedded system designer that form the content of this course. The emphasis of this course will be at the system layer where hardware meets software, with plenty of hands-on experience at "bare metal" programming. Topics typically covered include embedded computing platforms (hardware, microcontroller instruction sets, software in both assembly language and C); interacting with the external world (analog I/O, serial ports, control); system-level engineering (design cycle, architectural patterns); real-time operation (timers, interrupts, concurrency); constraints and optimization (economics, power, performance); and a survey of techniques important for building systems that work in the real world (debug, test, robust design, dependability, ethical/societal issues). Weekly hands-on hardware and software experiences with a 16-bit microcontroller module will tie directly to lectures to reinforce core skills.
4 hrs. lec., 1 hr. rec., 3 hrs. lab.
Prerequisites: 18-240 and 15-213.
As of Fall 2008, the plan is to alternate years for 18-348 and 18-349 as follows (subject to change):
You can find representative administrative, grading, and other information
at:
http://www.ece.cmu.edu/~ece348/admin.html
although you can expect minor adjustments to weighting of assignments and other
policies each semester as we fine-tune the course. There will be an in-class
first exam mid-semester and an in-class second exam the last week of classes.
There will be no exam scheduled during finals week.
You can see the syllabus from last year along with all the lab assignments at the course home page: http://www.ece.cmu.edu/~ece348
What is involved with the labs?
There are weekly labs, with each lab generally corresponding to one or two lectures from the previous week. In the first half of the semester they are mostly one lab per lecture; as the topics become more involved in the second half of the semester, they are mostly one lab per pair of lectures. Labs are performed in teams of two, and we let you pick your partner as long as both of you register for the same lab section. The labs use a Freescale MC9S12C32 microcontroller module, a protoboard, and Codewarrior development tools for both C and assembly language programming. There is no operating system used on the microcontroller. You get to take the lab hardware (microcontroller module and proto-board) home with you, and the officially scheduled lab times are primarily for last-minute help and showing the TAs that you got everything to work. The lab rooms are available 24x7 with ID card access. Lab assignments are usually released at least a week before they are due. We emphasize bite size lab assignments, with no killer big projects. (You can use this or other hardware for a big project by taking 18-549.)
What are some reasons to take this course?
What are some situations in which I probably shouldn't take this course?
When should I take 18-349 or 18-648 instead?
For more information on 18-349, see: http://www.ece.cmu.edu/~ee349/
Can I skip 18-240 or 15-213? Can I take them concurrently (as a "co-req")?
Sorry, but no. ECE's policy is to strictly enforce pre-reqs. You must complete 18-240 AND 15-213 before taking 18-348. We build on content in those courses and assume you have already completed them. If you are an INI student you are expected to enroll in 18-342 and not this course.
How does this course relate to the contents of Operating Systems (15-410)?
If you've already taken a heavy-duty OS course probably a lot of the material in this course will be a repeat of what you've already seen. Certainly there is new material such as real time scheduling and analog interfacing, but there will be a lot of overlap. On the other hand, taking this course first will definitely help you prepare for an OS course. This course (18-348) will get you very solid on low-level building blocks such as assembly language, interrupts, task switching, and concurrency. Once you have those concepts, an OS course is going to be a lot easier for you. So, if you are a CS major and want some ECE courses, we recommend you take 18-348 before you take 15-410.
What about the workload with all those lab assignments?
We spend considerable effort to make sure the course workload stays relatively even throughout the semester. It is a 12 unit course and we take the goal of ensuring a "typical" student spends about 12 hours per week very seriously. For example, we ask students each week to self-report number of hours spent on the course (including lectures, recitations, labs, etc.) so we can make mid-semester adjustments. The average median student effort was 11.8 hours per week in 2007, including time spent on extra credit project portions. The highest weekly median was during week 7, at 15 hours for that week. Individual student efforts averaged over the length of the course ranged from 8.4 to 14.2 hours/week. Obviously some students will spend more time and some students will spend less time on this course according to their individual abilities. You can see the raw data in our 2007 student workload graph.
Textbook and lab hardware
The textbook is Embedded Microcomputer Systems: Real Time Interfacing, 2nd Edition, ISBN 0534551629. If you are pressed for cash, consider getting the textbook used on Amazon etc. for a lot less than retail. ("addall.com" sometimes is helpful finding discounted texts at a substantial discount.) But, be sure you get the 2nd Edition! We suggest you attend class before purchasing the text.
We expect to loan CPU modules and a prototype board to each lab group. The module can be used without the prototype board, and the development software includes a complete software simulator.
Microcontroller Module![]() |
Proto Board![]() |