ECE Header Logo

EEC284 – Design and Optimization of Embedded Computing Systems

4 units – every year

Prerequisite: EEC 170 and EEC 180B; ECS 122A is recommended or consent of instructor

Grading: Letter; homework (25%), midterm exam (25%) and project (50%).

Catalog Description:

Introduction to design and optimization of digital computing systems for embedded applications. Topics include combinatorial optimization techniques, performance and energy optimization in embedded systems, compilation and architecture-specific mapping, programmable and reconfigurable platforms; design automation and algorithmic improvements to design process.

Expanded Course Description:

The course includes a major project which will require literature survey, use of CAD tools and development of algorithms, and presentation. The project is determined at the beginning of the course and it is carried out throughout the quarter. It is possible to work on a problem that is related to students’ ongoing research efforts.

  1. Introduction
    1. Embedded computing systems
    2. Optimization techniques
    3. Target models of computations
  2. Combinatorial optimization
    1. Complexity and NP-completeness
    2. Approximation algorithms
    3. Graph algorithms overview
      1. Shortest path
      2. Network flow
      3. Graph coloring, cliques, independent sets
    4. Randomized and online algorithms
    5. Continuous vs. discrete optimization
      1. Linear and Integer Programming
      2. Convex optimization
  3. Design and optimization of embedded systems
    1. Architectures and platforms
    2. Operating systems, compilers and virtual machines
    3. Realtime systems
      1. Worst-case execution time estimation
      2. Soft vs. hard realtime systems
    4. Scheduling
      1. Task scheduling
      2. Communication scheduling
      3. Voltage scheduling
    5. Partitioning
      1. Min-cut partitioning
      2. Min-quotient partitioning
      3. Temporal partitioning
    6. Hardware synthesis
      1. High-level synthesis
      2. Implementation selection
      3. Programmable and reconfigurable platforms
    7. Compilation and code generation
      1. Overview of classic transformations
      2. Memory access optimizations
      3. Template generation and matching
      4. Compilation for reconfigurable computers
    8. Networked Embedded Systems
      1. Collaborative applications
      2. Code migration
      3. Incremental analysis

Textbook/reading:

  1. Wayne Wolf, Computers as Components, Morgan Kaufmann Publishers, 2001
  2. J. fisher, P. Faraboschi, C. Young, �Embedded Computing, Morgan Kaufmann Publishers, 2005
  3. T. Cormen, C. Leiserson, R. Rivest, C. Stein, �Introduction to Algorithms, Mc-Graw Hill, 2001

Instructor: Ghiasi