Languages for Embedded System Design
|Class meets on Mondays and Wednesdays, 4:10pm-5:25pm, in Room 545 of the Seeley W. Mudd Building|
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.
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.
Stephen A. Edwards.
Languages for Digital Embedded Systems.
Near Columbia, this is available at Papyrus Booksellers, at the corner of 114th and Broadway. Textbooks are downstairs.
50 % Project
15 % Midterm 1
15 % Final
20 % Homework
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.|
|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.|
|COMS W4995-02 from 2001|
|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.|
|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.|
|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 Mon Dec 16 14:20:10 EST 2002||All Rights reserved|