CS 599
Software Engineering for Embedded Systems

Fall Semester, 2002
Location: VHE217
Time: Tuesdays 2:00 - 4:50 pm
Class number: 048-33636D
Prerequisite: None (desired CS 578 or CS 612)


Instructor | OverviewReadingsAssignmentsSchedule | Blackboard


Instructor

·        Nenad Medvidovic

o       Electronic Mail: neno@usc.edu

o       Office: SAL 338

o       Office Phone: (213) 740-5579

o       Office Hours: Tuesdays 12:30 pm – 1:30 pm

Teaching Assistant

·        Vladimir Jakobac

o       Electronic Mail: jakobac@usc.edu

o       Office: SAL 327

o       Office Phone: (213) 740-6504

o       Office Hours: Thursdays 5:00 pm – 6:00 pm


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,

[3]   participating in class discussions,

[4]   completing a written exam, and

[5]   completing a group project.


Readings

  • There is no textbook for the course.
  • Several papers (see the Schedule) will be used as the basis of the course.  All papers are available on-line. Furthermore, students tasked with presenting a particular topic may need to locate additional relevant papers as needed.
  • To aid your note taking, I will also make the lecture slides available on-line. Students in charge of a given presentation will be required to mail their slides to me by 10 am of the day of the presentation. Students will be able to download the slides by going to the appropriate Discussion Topic in the Schedule.

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.

15%

Presentations 

Each student will present the details of one paper and any accompanying information; in certain cases two students may be assigned to a single paper. The presentation 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 presenters are responsible for familiarizing themselves with the necessary additional background information.  They are also responsible for staying within the time allotted for the presentation.

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.

15%

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. For the implementation part of your project, you will be using the Prism infrastructure.

35%

Examination

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

20%


Schedule (Subject to Change) 

Week

Date

Discussion Topic

Readings

Presenters

1

Aug 27

  • Course Introduction

 

  • Jakobac

(40 min.)

  • Overview of Software Engineering Principles
  • A. Finkelstein and J. Kramer. Software Engineering: A Roadmap. In The Future of Software Engineering, Anthony Finkelstein (Ed.), pp. 5-22, ACM Press 2000.

(120 min.)

2

Sep 3

  • Overview of Embedded Software Research at USC

(80 min.)

  • Overview and Demonstration of the USC Embedded System Infrastructure

 

  • Jakobac

 (30 min.)

  • Introduction to the Class Project and Computing Facilities

 

(30 min.)

3

Sep 10

(2:50pm

4:50pm
)

  • The Problem Space
  • E. A. Lee. Embedded Software. Revised from UCB/ERL Memorandum M01/26, University of California, Berkeley, CA, November 1, 2001.

(30 min.)

(30 min.)

4

Sep 17

  • Project Discussion

 

5

Sep 24

  • Project Discussion and Clarification; Lab Time
    (KAP103)

 

  • Jakobac,
    Mikic-Rakic

6

Oct 1

  • Project Clarification

 

  • Medvidovic

(20 min.)

  • The Problem Space (cont.)

(30 min.)

  • Requirements Engineering

(30 min.)

7

Oct 8

  • Project Clarification

 

 (20 min.)

  • Software Modeling

(30 min.)

(30 min.)

 (45 min.)

8

Oct 15

  • Project Clarification

 

  • Medvidovic

(20 min.)

  • Implementation Issues
  • 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.

(30 min.)

(30 min.)

(45 min.)

9

Oct 22

  • Project Clarification

 

  • Medvidovic

(20 min.)

  • Analysis, Testing, and Simulation
  • M. J. Harrold.  Testing: A Roadmap. In The Future of Software Engineering, Anthony Finkelstein (Ed.), pp. 63-71, ACM Press 2000.

(30 min.)

(30 min.)

(45 min.)

10

Oct 29

  • Cross-Cutting Issues

(30 min.)

(30 min.)

(30 min.)

(30 min.)

11

Nov 5

  • Runtime Support:
    Deployment

 (30 min.)

12

Nov
12

Runtime Support:
 (re)Configuration, Mobility, Disconnected Operation

(30 min.)

  • A. Fuggetta, G. P. Picco, and G. Vigna. Understanding Code Mobility. IEEE Transactions on Software Engineering, vol. 24, no. 5, pp. 342-361, May 1998.

(30 min.)

(30 min.)

13

Nov 19

Exam (90 min.)

  • Project Discussion

 

  • Jakobac

(60 min.)

14

Nov 26

  • Runtime Support: Location Awareness
  • Kumara Guru Gowrappan

(25 min.)

  • Wenhan Wang

(25 min.)

  • Gaurav Bansal

(25 min.)

  • Requirements Engineering
    (from Week 6)

(30 min.)

15

Dec 3

  • Project Play-Offs

 

 

Finals

Dec 9

Final project write-ups due