Stephen A. Edwards Columbia University Crown
  COMS W4995-02
Languages for Embedded System Design
CVN Summer 2003
 Overview
  Embedded systems are single-purpose computers that are often part of larger systems such as cars or telephones. Their design requires tight integration of application-specific hardware and software, and often have strong constraints on power, cost, and speed. While most embedded systems are currently designed using ad hoc techniques, the complexity of future systems will demand formal design techniques.

The course is an introduction to a wide variety of languages used to specify embedded systems. Embodied in these languages are different models of computation, such as sequential, dataflow, discrete-event, and synchronous, that shape how design problems may be solved. Knowing about more of these languages will give you a bigger bag of tricks for solving design problems.

When you have completed the course, you will have gained some experience using each of the languages, will have learned about how each of them are implemented, and will have completed a project that will give you more in-depth knowledge of one of the languages, either by using it to design a system or by creating an analysis tool for the language.

 Prerequisites
  COMS W4115 Programming Languages and Translators or equivalent
COMS W3823 Digital Logic or equivalent

This is a course about both hardware and software languages, so I expect you to be familar with programming in a language such as C or Java, be aware of language and compiler design issues and also be somewhat familiar with digital logic design. A simple litmus test: you should be able to write a program that performs a depth-first traversal of a graph, know what an abstract syntax tree is, and should be able to design a four-bit binary counter using NAND gates and flip-flops.
 Required Text
  Cover of
Languages for Digital Embedded Systems Stephen A. Edwards.
Languages for Digital Embedded Systems.
Kluwer, 2000.
ISBN 0-7923-7925-X

Near Columbia, this is available at Papyrus Booksellers, at the corner of 114th and Broadway. Textbooks are downstairs.
 Schedule
Date  Lecture  Notes  Reading  Assignment  Due 
June 16   Introduction   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 1      
June 18   Assembly Languages   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 6   HW 1 PDF File (for Acrobat)    
June 20   The C Language   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 7      
June 23   The C++ Language   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 8      
June 25   The C++ Language, Part 2       HW 2 PDF File (for Acrobat)   HW 1  
June 27   Software Concurrency   PDF File (for Acrobat) PDF File (for Acrobat)        
June 30   Java 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 9     Project Proposals  
July 2   Java 2          
July 4   RTOS 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 10     HW 2  
July 7   Midterm 1  
July 9   Esterel 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 13      
July 11   GL: Al Aho on Awk   PDF File (for Acrobat) PDF File (for Acrobat)        
July 14   Writing Scholarly Papers   PDF File (for Acrobat) PDF File (for Acrobat)        
July 16   Esterel 2          
July 18   Esterel Programming   PDF File (for Acrobat) PDF File (for Acrobat)     HW 3 PDF File (for Acrobat)   Literature Survey  
July 21   Dataflow 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 11, 12      
July 23   Dataflow 2          
July 25   Review of Digital Logic   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 2      
July 28   Verilog 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 3   HW 4 PDF File (for Acrobat)   HW 3  
July 30   Verilog 2          
August 1   System C 1   PDF File (for Acrobat) PDF File (for Acrobat)   Ch. 16      
August 4   System C 2         HW 4  
August 6   Midterm 2  
August 18   Project Due.  
 Deliverables
 
  • Two tests, one covering the first half of the class, one covering the second. There will be no comprehensive final. Here are the rules for the tests:
    • You are allowed 70 minutes.
    • You may consult the class text and your notes.
    • You may use a calculator.
    • Perform all work on the midterm itself. Use the backs of the paper if necessary. Do not use scratch paper.
    • Justify your answers.
  • Five homework assignments, each generally due two weeks after it is assigned.
  • A one-paragraph project proposal.
  • A one-page literature survey reviewing your project area.
  • A six-page project writeup.
 The Project
  The main point of this class is a large language-related project. I envision two types of project:
  • Use one of the languages discussed in the class to implement some part of an embedded system and report on the results.
  • Build a piece of software that synthesizes, analyzes, or implements one of the languages discussed in class.
  Writeup The outcome of your project will be a workshop-class paper, meaning it should be scholarly, accurate, and brief, but it does not have to be polished. Ideally, it should be in a form suitable for submission, but actually submitting it to a workshop or conference is not required.

Like all academic papers, the contents of the writeup should be your own and appropriate credit (i.e., citations) given where you have used or adapted other's work.

 Project Report Format
  Make your project report look like a conference paper:
  • Six pages maximum, including figures tables, and references. This is a hard limit: edit text to reduce the size of your paper.
  • Minimum 10 point font
  • Two column
  • Include, in the following order
    • Abstract
    • Introduction
    • Related work
    • One to three "meat" sections that describe your project
    • Experimental results, if appropriate
    • Conclusions
    • References
  • Cite all work you are mimicking, extending, or comparing yourself with.
  • Use a numbered style for citations, e.g.,
  • [5]
    S. Edwards, T. Ma, and R. Damiano. Using a Hardware Model Checker to Verify Software. In Proceedings of the 4th International Conference on ASIC, Shanghai, China, October 22-25, 2001.
    [6]
    Stephen A. Edwards. Languages for Digital Embedded Systems. Kluwer, 2000.
    [7]
    S. Edwards, L. Lavagno, E. Lee, and A. Sangiovanni-Vincentelli. Design of embedded Systems: Formal models, validation, and synthesis. Proceedings of the IEEE 85(3):366-390, March, 1997.
  • I want the final report in PDF . Let me know if you have difficulty generating this. Project reports will be posted on the class website for posterity unless you specifically ask me not to.
 Project Writeup Grading
  Out of 100 points for the literature survey, 50 are specific to it:
40
Summary and analysis of existing work in the field
10
Plans for the implementation portion of the project
Out of 100 points for the final project writeup, 50 are specific:
10
Formal modeling
20
Implementation
20
Innovation
The remaining 50 points for both writeups are the same:
10
Description of context of research: its relevance and potential impact
10
Description of objectives
10
Meet page limit
5
Grammar/spelling
5
Format of references and in-text citations
5
Identify at least three relevant, key papers
5
Electronic version of the paper
 Sample Project Proposal
  I will implement a library supporting Kahn Process Networks in Java. It will employ the scheduling algorithm due to Parks and have facilities for detecting a deadlock condition. I will construct the library and test it first on the small example from the book, then look for more examples, perhaps the video decode example described by Vissers. Although the final goal of this project will be functional correctness rather than efficiency, I plan to measure the scheduling/context switching overhead by statistically sampling the Java process.
 Class policies
  Grading 50 % Project
15 % Midterm 1
15 % Final
20 % Homework
  Collaboration You are permitted to collaborate on homeworks, however, the homework you submit must be your own unique creation, and you must understand and be able to explain your result. My intention is not to reduce your workload, but to give you the opportunity to learn from your peers. See Columbia academic policies for more details.

Collaboration on the project is mandatory unless your "team" is just you.

Collaboration on the midterms is forbidden.

  Late Policy Zero credit for anything handed in after the due date without explicit approval of the instructor. Homeworks are due at the beginning of class on the designated due date.
 Useful Links
  A sample LaTeX file, a BibTeX file, a Makefile, and the PDF file they all produce, illustrating how to write a paper in LaTeX. You may use this as a template for the literature survey and final project report. Its content is also representative of what I am looking for in a final report.
  Homepage COMS W4995-02 from 2002
  Homepage COMS W4995-02 from 2001
  PDF File (for Acrobat) A small annotated bibliography on embedded systems.
  EE382C-9 Prof. Brian Evans at the University of Texas at Austin teaches a similar course that focuses more on signal processing issues.
  290N Prof. Edward A. Lee at the University of California, Berkeley taught a much more theoretical class on languages and models of computation.
  ee249 Prof. Alberto Sangiovanni-Vincentelli at the University of California, Berkeley taught a similar class.
  PDF File (for Acrobat) Kees Vissers and Pieter van der Wolf, Kahn Process Networks and system level design. A presentation that describes the use of Kahn Process networks in the design of an MPEG decoder.
  PDF File (for Acrobat) Gilles Kahn. The Semantics of a Simple Language for Parallel Programming. Information Processing 74: Proceedings of IFIP Congress. Stockholm, Sweden. p. 471-475. 1974.

Copyright © 2001 Stephen A. Edwards Updated Tue Jun 10 17:35:26 EDT 2003 All Rights reserved