ESE 350 - Spring 2016

piazza | canvas

ESE 350 Course Overview

Course Objectives

Embedded Systems are everywhere - in mobile phones, automobiles, aircrafts, medical devices and your mp3 player. In fact, Intel/AMD only produce 1% of microprocessors (mainly for use in PCs) while 99% of the microprocessors used today are in embedded computers. Embedded systems are computers dedicated to a specific set of tasks (such as your car's air-bag deployment system) and must execute them in a timely and safe manner. This course introduces you to the world of embedded systems and microcontrollers - where hardware meets software. This course is a great way to prepare for the Senior Design Project and serves as a launching pad for great ideas that combine electrical, mechanical and software-powered systems.

The primary objectives of this course are to:

  • Understand how real-world embedded devices integrate hardware and software
  • Experience designing and developing real operational microcontroller-based sensor/controller/actuator systems
  • Have fun building networked embedded systems!

Course Description

ESE350 provides an in-depth and hands-on introduction to interfacing real-world sensors and actuators to embedded computing systems. The course is split in two phases: Phase I covers basic microcontroller concepts and you will learn to program and control the microcontroller at the 'bare metal'. This phase covers the concepts needed for building electronic systems for real-time operation and user interaction, such as digital input/outputs, interrupt service routines, serial communications, and analog-to-digital conversion. In Phase II you use an embedded operating system to build larger and more sophisticated projects. Phase II will introduce the entire hardware-software-networking architecture of an embedded computer and will enable you understand how an embedded computer is built from ground-up and how hardware, software and networking interface to build large inter-connected systems. The course will conclude with a student-designed final project demonstration and presentation.

Labs: This course focuses heavily on learning by doing. Readings, lectures, and discussions serve to support the main concepts of the laboratory exercises while prelab quizzes, laboratory reports, and exams ensure that the concepts are well understood. Labs are performed in groups of two, ideally with each group consisting of at least one Electrical Engineering major and one Systems Engineering or Computer Science major. Each member of a group must participate in the labs, be present during demonstrations, and submit a joint lab report.

Required Hardware: You will be loaned a microcontroller board for the course based on the Freescale MC9S12C32 processor (one per student) and a prototype board (one per team). You must return these boards at the end of the semester. The boards will be freely available to you if you have any project in mind after the semester. You will also be loaned a FireFly sensor network kit with 4-5 wireless sensor nodes, multiple sensors and a programmer.

Prerequisites: Basic programming skills in C, ESE 205/215, ESE 206/216 or equivalent.

Meeting Times


MW 3:00 PM - 4:30 PM


Th 3:00-6:00 PM and F 1:00-4:00 PM

Back to Top

Lecture Content

The course is paced in five modules - starting gently from an overview of embedded system architectures and then ramping up to basic skills to design systems with microcontrollers. The goal of the course is not to teach just one specific microprocessor architecture but to get core skills that can work across a variety of analog and digital circuits. Therefore, we will introduce networked (wireless!) embedded systems after the mid semester and move towards building more interesting and interactive sensor-actuator-controller systems.

Modules Topic Activity
A Embedded Systems Basics L0,L1
B Microcontrollers L2,L3
C Interfacing Microcontrollers L4
D Networked Embedded Sys L5
E Embedded Building Blocks L6
F Real-World Embedded Sys Project

Back to Top


Copies of chapters will be made available for required and recommended readings.

Required (1 per group is sufficient)

  • The HCS12/9S12: An Introduction to Software & Hardware Interfacing, 2nd ed., Han-Way Huang, Thompson, 2010, ISBN # 1-4354-2742-4. The 1st edition textbook should be acceptable if you have or can get one.

A variety of online material can be found under the Resources section.

Back to Top


Your final grade for this course will be based on your performance in the course project, class participation, quizzes, assignments, and the final exam. The breakup will be as follows:

  • Project: 25%
  • Labs: 30%
  • Quizzes: 20%
  • Midterm Exam: 20%
  • Class Participation: 5%
  • Lab Assignments
    • There will be 6 lab assignments in the first 3 months of the semester to help you familiarize yourself with the microcontrollers and wireless sensor nodes you will be using for the project.
    • You need to understand how to program them, how to enable communications among them, how to save system energy, and how to build applications. Each lab is to be demonstrated and a lab report is to be submitted. Guidelines for lab reports will be handed out with the first lab.

  • Quizzes
    • Quizzes will be in-class and closed-book.
    • Expect 4 quizzes for the semester.
    • The quizzes will be simple and are intended to ensure that you have gone through all assigned readings.

  • Course Project
    • A team of 2 students will do each project. Groups should include at least one EE student. No group should have more than one SE or CIS persons. More information is available below.

  • Class Participation (5% of Grade)

Final grades will be assigned based on the following rules:

  • If you score more than 90%, you get an 'A' grade guaranteed.
  • If you score more than 80%, you are guaranteed to get at least a 'B' grade.
  • If you score more than 70%, you are guaranteed to get at least a 'C' grade.
  • If you score less than 70%, you are guaranteed to get some grade, not necessarily good!
  • A curve will be fit by discretion of the instructor if a sufficient number of students do not meet the above criteria.

Back to Top

Final Project


The following skills will be learnt during the course of the project:

  • Hands-on experience with networked embedded controllers with sensors and actuators.
  • Ability to understand and formulate a design problem in the context of the problem themes.
  • Design skills obtained by coming with an implementable design to address the chosen problem.
  • Implementation and demonstration of a working solution.
  • Evaluation and benchmarking of the performance of the system. (Don't ignore this!)
  • Documentation and presentation of the problem, design and implementation.
  • A list of projects to choose from will be made available during the third lecture of the semester.
  • Follow the class Google Group for any global announcements or changes on the project.
  • Form a group and pick a project from the list.
  • No project from the list can be picked by more than two groups (i.e. ideally, each group works on a different project).
  • Each project will be done by a team of 2 students. Exceptions are available only with the explicit permission of the instructor.
  • The project will be described in detail during the course of the semester. Every year has a special theme - this year's themes are Interactive Games and Body Sensor Networks.
  • All members of a project group are not guaranteed the same project grade. So, if you have a project member who is not contributing, talk to him/her first. If the situation does not improve, bring it to the attention of your TA and/or the instructor. Please ensure at the beginning of the semester that your project partner will stick around for the course.
  • A written team report on the project is expected at the end of the semester along with an online copy of the source code as well.
  • At the end of the semester, each project will be required to make a presentation either in class or in a separate day set explicitly aside for the purpose.
Last Year's Projects

Back to Top

Laboratory Usage

A portion of the Detkin Lab will be available for use by students taking the course. We hope to make this section of the lab available 24 hours a day. However, since the lab space is shared with one or more other courses, you can expect a significant amount of crowding, particularly near the end of the semester and when assignments/projects are due.

We expect to be able to set aside three 3-hour slots per week during which the Detkin Lab will be set aside exclusively for our course. A group may use more than one workstation only if nobody from the other group(s) is present. A reasonable-person principle will be applied at all times.

Back to Top

Computer Accounts

The projects will involve programming in C in the graduate computer cluster, or at a place of your convenience. All editing, coding and compiling will be done in the Windows and Linux programming environments. You must have an ESE course account for this course - one will be created if you do not have an ESE account.

Back to Top


Announcements will be made on Piazza. The instructor and the TAs will post announcements regarding the class on this board. Check this board regularly for clarifications, corrections, and all course-related announcements. If Penn is shutdown due to snow, there will certainly be no class. Otherwise, it is still possible that your instructor and others are unable to commute to school in the foul weather. Please check the Penn and class bboards in case of more than about 4 inches of snow for class status.

Back to Top

Computer Failures

Computer failures (e.g. server failures, network failures, power outages, etc.) are a fact of life. Plan your project to be able to cope with this degree of uncertainty. Short failures will be considered to be part of the normal course of events. In the case of catastrophic failures (which last more than 12 hours), notify your friendly teaching assistant.

Back to Top

Academic Integrity

I expect that this section on cheating is the only reference to the topic we will have throughout the course. I expect that the students taking the course have the integrity not to cheat. However, to be fair to the vast majority of honest and hard-working students, the University and SEAS's policies on cheating will be rigorously enforced.

Back to Top


Learn a lot and have fun doing it!