CS 589
Software Engineering for Embedded Systems

Fall Semester, 2006
Location: WPH 205
Time: TTh 2:00 – 3:20 pm
Class number: 048-30161D
Prerequisite: CSCI 577A


Instructor | OverviewReadingsAssignmentsSchedule


Instructor

    • Electronic Mail: neno@usc.edu
    • Office: SAL 338
    • Office Phone: (213) 740-5579
    • Office Hours: TTh 11:00 am – 12:00 pm  

 

 

Teaching Assistant

 

    • Electronic Mail: gedwards@usc.edu
    • Office: SAL 327
    • Office Phone: (213) 740-6504
    • Office Hours: MTh 12:30 – 1:30pm

Overview

Over the past decade, the world of computing has moved from large, static, desk-top machines to small, mobile, palm-top, and embedded devices.  The methods, techniques, and tools for developing software systems that were successfully applied in the former scenario are not as readily applicable in the latter.  Software systems running on networks of mobile, embedded devices must necessarily exhibit properties that are not always required of more traditional systems: near-optimal performance, robustness, distribution, dynamism, mobility.  This class will examine the key properties of software systems in the embedded, resource constrained, mobile, and highly distributed world.  The class will assess the applicability of mainstream software engineering methods and techniques (e.g., object-orientation, component-based development, software architecture) to this domain.  While not the primary focus of the class, enabling advances in other areas (e.g., embedded, real-time operating systems, wireless networking, the Internet) will be studied from a software application development perspective.  A class project will give students hands-on experience with building software development infrastructure and/or applications in this important domain.

Course requirements are

[1]   reading assigned papers,

[2]   presenting one of the papers and/or leading the discussion on a given topic,

[3]   participating in class discussions,

[4]   completing a written exam, and

[5]   completing a group project.


Textbook

  • Anthony Finkelstein, editor. The Future of Software Engineering. ACM Press 2000.

Additional Readings

  • Several papers (see the Schedule) will be used in addition to the textbook. All papers are available on-line.

Assignments

Name

Description

Weight

Questions about papers

A small set of questions will be posted about each reading set by the Friday of the week before the readings are due. Each student will be required to provide short answers (no longer than a single paragraph) to these questions, and mail them in plain text to the teaching assistant before the class in which the readings are due.  Each student will be allowed to skip up to three questions during the semester without penalty.

10%

Presentation and Discussion

Each student will either present the details of one paper from the textbook or from additional readings, or (s)he may be tasked with preparing and leading the discussion on a topic; in certain cases two students may be assigned to a single paper and/or discussion topic. The presentation and discussion should include at least, but need not be restricted to, the material covered in the paper.  The presentation should also address the following four issues:

  1. summary of the paper,
  2. strengths of the approach,
  3. weaknesses of the approach, and
  4. relevance to embedded software

The discussions should be organized around the cross-cutting issues identified in the given set of papers.  The presenters and discussion leaders are responsible for familiarizing themselves with the necessary additional background information.  They are also responsible for staying within the time allotted for the presentation/discussion.  All presentations are 30 minutes long.

15%

Class participation

Students are expected to prepare for each class (by reading papers) and actively participate in the discussions of the topics for which they are not presenters.

10%

Class project

Design and implementation of a novel application or development tool that exploits one or more existing approaches to software engineering in the context of embedded systems, demonstrates a novel idea in this domain, or overcomes a known significant challenge posed by embedded systems. The class project will be discussed in Week 4. Intermediate project reports will be due in Week 10.

40%

Examination

The written exam will assess the students’ understanding of the material covered in class.

25%


Homework Assignments

Homework Assignment 1

Homework Assignment 2

Homework Assignment 3

Homework Assignment 4

Homework Assignment 5

Homework Assignment 6

Homework Assignment 7

Schedule (articles taken from the textbook are bolded) 

Week

Discussion Topics

Readings and Assignments
Presenters

1

  • Course Introduction

 

  • Medvidovic & Edwards
  • Brief overviews of Software Engineering and Embedded Software

2

  • Embedded Software Research at USC (1)
  • Embedded Software Research at USC (2)

3

  • Introduction to the Class Project and Computing Facilities

4

  • Mobility (1)
  • Mobility (2)
  • Discussion
  • Medvidovic

5

  • Real-time (1)
  • Real-time (2)
  • Discussion
  • Medvidovic

6

  • Fault-tolerance and Safety (1)
  • Fault-tolerance and Safety (2)
  • Discussion
  • Medvidovic

7

  • Ubiquitous Computing
  • Discussion
  • Medvidovic
  • Project Clarification

 

  • Edwards

8

  • Modeling, Analysis, and Simulation (1)
  • Daniel Jackson and Martin Rinard. Software Analysis: A Roadmap. In The Future of Software Engineering, Anthony Finkelstein (Ed.), pp. 215-224, ACM Press 2000.
  • Modeling, Analysis, and Simulation (2)

9

  • Modeling, Analysis, and Simulation (3)
  • Discussion
  • Project Clarification

Project Part I Due

10

  • Implementation (1)
  • No presenter
  • Implementation (2)
  • P. Narasimhan, T. A. Dumitras, A. M. Paulos, S. M. Pertet, C. F. Reverte, J. G. Slember and D. Srivastava. MEAD: Support for Real-Time Fault-Tolerant CORBA. Concurrency and Computation: Practice and Experience, vol. 17, no. 12, 2005, pp. 1527-1545.
  • Raul Correal-Tezanos
  • M. Hicks, J. T. Moore, and S. Nettles. Dynamic Software Updating. In Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI’01), Snowbird, UT, June 2001.

11

  • Implementation (3)
  • Discussion
  • Medvidovic
  • Project Clarification

 

  • Edwards

12

  • Configuration and Deployment
  • Lee Lo
  • Configuration and Deployment
  • Discussion
  • Medvidovic
  • Project Clarification

 

  • Edwards

13

  • Bosch Project Experience

 

  • Malek and Seo
  • Exam Review

 

  • Medvidovic

14

Exam

Thanksgiving – No Class

15

Project Presentation and Demonstration

Project Presentation and Demonstration (2)

Finals

Final Project Write-ups Due