18-348 FAQ

This web page should help answer common questions about 18-348 and the difference between that course, 18-349, and 18-649.
Please read this FAQ in its entirety before e-mailing me with questions. Thanks!

-- P. Koopman, instructor


Here is the course description:

18-348 (Co)
Embedded System Engineering
Spring: 12 units
This course covers the broad range of foundational skills that apply across all embedded computer system application areas, from thermostats to self-driving vehicles. The emphasis is at the layer where hardware meets software. Topics include microcontroller hardware, assembly language, embedded C programming, analog I/O, timers, code optimization, interrupts, concurrency, and embedded control networks. Real time operation is emphasized, including writing a preemptive RTOS scheduler. Real world engineering practices, constraints, and example applications are integrated throughout the course. Weekly hands-on hardware and software experiences with an industry-strength automotive embedded controller are coordinated with the lecture content to reinforce core skills. Prerequisites: 18-240 and (18-243 or 18-213 or 15-213).

The course is structured each week as: two 2-hour lectures, one 1-hr recitation, one 3-hr lab.

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, but there may be a 2-week project assignment due during finals week (not a killer unless you make it one on your own; just something to demonstrate you can put pieces together that you learned about in the course).

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 MC9S12C128 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. Specifically, you must arrange with the TA to be at the lab at least one designated hour out of the 3-hour lab period to demo at an appointed time. The lab rooms are available 24x7 with ID card access. The usual timing is that lab assignments are 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, 18-648 or 18-649 instead?

For more information on 18-349, see: http://www.ece.cmu.edu/~ee349/

Can I skip 18-240 or 18-243? 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 18-243 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. If you are a grad student from any other program you can take this course space-available after undergrads are enrolled, and pre-reqs are not enforced.

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. Data for 2009 was similar, with an average median student effort of 11.2 hours per week. The switch to spring will result in some course reorganization, but we will target an average median effort of 12 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 student workload graphs.

Textbook and lab hardware

The textbook is Embedded Microcomputer Systems: Real Time Interfacing, ISBN 0534551629. Be sure to get the 2nd Edition, printed in 2006. Do not buy the newer 3rd edition -- it deleted essential content so we can't use it for our text. If you are pressed for cash, consider getting the textbook used on Amazon etc. for a lot less than the price of either edition new. ("addall.com" sometimes is helpful finding discounted texts at a substantial discount. If you are paying more than $100 used for this book contact the course instructor before purchasing; something is probably wrong with the search you are using.) Regardless, be sure you get the 2nd Edition! We suggest you attend class before purchasing the text. Many students get by with just the data sheet and course notes, and we do not specifically test material that is only available in the book.
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
{module}
Proto Board
{protoboard}

Last update: 1/10/2013