Recent Changes

:: Personal ::


Main / CoursesESS13

ENGR 844 - Embedded Systems - Spring 2013

Instructor: Seapahn Megerian, Ph.D.
San Francisco State University
School of Engineering

ENGR 844 course bulletin :: SFSU Class Schedule

Contact Info and Office Hours:

Email:engr844 at
Office hours:Tuesdays after lecture and by appointment.

Time and Place

Lecture - Tuesday 18:10-20:55, Thornton Hall 425



Capsule Statement of Course Content:

  • Comprehensive study of embedded systems starting from their classification, applications, and standards, to architectures, components, and design practices.
  • Some special focus on examples from cellular phone, tablets, and networked embedded systems domains.
  • Project driven course to encourage hands-on experimentation with real embedded systems to gain first-hand insights into design and implementation challenges.

Course Description:

This course is designed to present a broad overview of the vast field of embedded systems to an audience with familiarity with computer engineering principles. The preliminary topics covered will include introduction and classification of embedded systems, the application domains, their components, and design cycles. Some coverage of existing standards will be followed by in-depth looks into several real examples, with more focus on examples from cellular phone domains, tablets, and emerging networked embedded systems. The course will primarily be project driven to encourage a hands-on approach to the topics discussed in class. Although the topics of this class by their nature are broad, no specific prior knowledge will be assumed and the class will be fairly self contained. Thus, the exact coverage of the material and their related background will depend on the backgrounds of the students attending the lectures (i.e. class participation is strongly encouraged!).


Recommend students to have taken at least undergraduate level courses in digital design (combinational and sequential circuits), system architecture, computer systems fundamentals, and operating systems. Specific algorithms, computer networking, and distributed system knowledge is not required as the course is designed to be self contained in those domains. Background and relevant material will be reviewed as deemed necessary by the instructor.


5% - Class participation
5% - Preliminary project proposal
40% - Midterm
20% - Final project presentation and demos
30% - Final project report (website)

Tentative Course Schedule:

  • 01-29: Introductions and course overview
  • 02-05: Background review (basic concepts, digital design, architecture, ...); Course project assignment
  • 02-12: Embedded system classifications, models, applications, and the design cycle
  • 02-19: Hardware platforms and design (uC, uP, DSP, FPGA, custom ASIC, ...); Form project groups
  • 02-26: Embedded processors performance; Project proposals due!
  • 03-05: Student presentations - Preliminary (short) project proposals
  • 03-12: Processor performance, parallelism, EPIC and VLIW, Superscalar
  • 03-19: Networked embedded systems
  • 03-26: Spring Recess - No class
  • 04-02: Distributed and collaborative algorithms (example: distance-vector routing)
  • 04-09: Midterm review, sample problems, homework solutions
  • 04-16: Midterm - No class.
  • 04-23: Sensors, sensor networks, and surveillance
  • 04-30: Topic TBD
  • 05-07: Project presentations, demos, and discussions
  • 05-13: Project presentations, demos, and discussions

The sections below will be regularly updated throughout the course so check back often!

Recommended reading list and links


  • Background topics that should already be familiar to you.
  • Course Project
  • Project platform examples
  • Notes: 2-05 Introduction (thanks Aditya!)
  • Notes:
  • Notes: 2-19 Design (thanks Ian!)
  • Project team selections and project proposal due before lecture on 2/26/2013 (email).
  • Notes: 2-26 Performance (thanks Carol!)
  • 10 min project presentations in class on 3/5/2013. See the course project page for details.
  • Simple multithreading for Widnows.
  • Simple multithreading for Linux (updated after class).
  • Note I updated the linux version of the program after class.
    • mutex needed initializing.
    • I use clock() to get cpu time.
    • For the 2-thread case, we divide the time by 2 since it is for two threads.
  • Notes: 3-12 Processors (thanks Anurag!)
  • Class notes from 2010: Networking
  • Homework 1
  • Homework 2
  • Midterm Exam
    • Due Monday 4/22 at 11:59pm
  • Project Reports Due 11:59pm Tuesday May 21, 2013
    • You are submitting 3 things:
      1. Link to your project website (which should have pictures, possibly video, audio, etc).
      2. Project report in pdf format (with a list of team members and contributions on each part of the project).
      3. Your source code, hardware design (if applicable), and other source materials you have created for the project, data you have collected, etc as discussed in class. You should send your files in a compressed archive (such as zip, rar, gzipped tar, or 7z)
    • If the files are large, email a link to where they can be downloaded from (strongly encouraged to prevent email problems). If the file gets really large (e.g. over 10MB), email me and we can discuss what to do (send the report separately in that case).
    • Make sure you receive an email acknowledgment from me that I got your submission.
    • One submission per group
    • In your report, include the list of team members and contributions (who worked on what parts and how much (%)). This should be something all team members agree on. If there are disagreements, feel free to send me separate lists and describe why you disagree.
  • See updated project grading criteria at the end of the Project Page.