Home Page

Lecture outline (Fall 2010, 27 lectures)

  1. (8/27) Discussion: Course introduction and logistics.
  2. (8/30)
  3. (9/1)
  4. (9/3) Discussion: [CXH or JR] Version control (SVN)
  5. (9/6) Holiday
  6. (9/8) [JR away]
  7. (9/10) Discussion [JR away]
  8. (9/13)
  9. (9/15)
  10. (9/17) Discussion
  11. (9/20)
  12. (9/22)
  13. (9/24) Discussion
  14. (9/27)
  15. (9/29) [MuSyC review]
  16. (10/1) Discussion
  17. (10/4) [EAL away]
  18. (10/6) [EAL away]
  19. (10/8) Discussion [EAL away]
  20. (10/11)
  21. (10/13) [SS away]
  22. (10/15) Discussion [SS away]
  23. (10/18)
  24. (10/20)
  25. (10/22) Discussion
  26. (10/25) [ESWeek, EAL away]
  27. (10/27) [ESWeek, EAL away]
  28. (10/29) Discussion [ESWeek, EAL away]
  29. (11/1)
  30. (11/3)
  31. (11/5) Discussion
  32. (11/8) [SS and JR away, tentatively]
  33. (11/10) [SS and JR away, tentatively]
  34. (11/12) Discussion
  35. (11/15)
  36. (11/17)
  37. (11/19) Discussion
  38. (11/22)
  39. (11/24)
  40. (11/26) Holiday: Thanksgiving
  41. (11/29)
  42. (12/1)
  43. (12/3) Discussion: Last day of instruction

Topics

  1. Introduction:
    • Introduction to computer-aided design methodologies (RTL, TLM, Analog, CPS)
    • Examples of problem domains: integrated circuits, biosystems, nanosystems, smart buildings, etc.
    • Modeling, problem formulation, abstraction/refinement, nondeterminism, discrete vs. continuous.
  2. Algorithms for Discrete Models (with their applications)
    • Longest/shortest path in a DAG
    • Timing analysis for circuits and embedded software (common themes: True (feasible) vs. False (infeasible) paths)
    • Hash functions (e.g. in Discrete-event simulations, use of a calendar queue for maintaining an event queue)
    • Linear programming and ILP [several applications -- which ones to cover?]
    • Observability and controllability (Testing for stuck-at & delay faults, Controller synthesis?)
    • Basic Boolean algebra: cube, minterm, Boolean operations, factorization, etc. (Logic synthesis and optimization)
    • Boolean function representation & manipulation (BDDs): Equivalence checking, model checking, etc.
    • Boolean satisfiability (SAT): Equivalence checking of combinational circuits (aka "implementation verification")
    • Reachability analysis & temporal logic: Formal verification: Sequential equivalence checking, model checking
    • Scheduling algorithms: dataflow models, managing event queues, parallel scheduling (multicore, high-level circuit synthesis).
  3. From Algorithms to Software
    • Complexity and modularity
    • Concurrency and parallelism
    • Parallel programming for dynamic programming and graph algorithms.
  4. Algorithms for Continuous Models
    • Solving nonlinear equations (e.g. Newton-Raphson)
    • Solving continuous-time dynamics numerically (transient concepts)
    • Continuous-time frequency domain concepts and computational algorithms
    • Continuous-time stochastics
  5. Emerging problem spaces: Biosystems, cyber-physical systems, nanotechnology
  6. Software Engineering (consult Andreas)
    • Version control: SVN
    • Eclipse
    • Working with open-source code
    • Copyrights and licenses
    • Language features: templates, operator overloading
    • When to use what language
    • Building on Ptolemy II

Suggested Projects

  1. Scheduling dataflow graphs for minimum memory usage.
  2. Scheduling dataflow graphs on parallel processors.

Help with PmWiki!

Note: Consider using ViewSourceWith plugin for Firefox to edit this.

A local copy of PmWiki's documentation has been installed along with the software, and is available via the documentation index.

To continue setting up PmWiki, see initial setup tasks.

The basic editing page describes how to create pages in PmWiki. You can practice editing in the wiki sandbox.

More information about PmWiki is available from http://www.pmwiki.org .