# Home Page

## Lecture outline (Fall 2010, 27 lectures)

- (8/27) Discussion: Course introduction and logistics.
- (8/30)
- (9/1)
- (9/3) Discussion: [CXH or JR] Version control (SVN)
- (9/6) Holiday
- (9/8) [JR away]
- (9/10) Discussion [JR away]
- (9/13)
- (9/15)
- (9/17) Discussion
- (9/20)
- (9/22)
- (9/24) Discussion
- (9/27)
- (9/29) [MuSyC review]
- (10/1) Discussion
- (10/4) [EAL away]
- (10/6) [EAL away]
- (10/8) Discussion [EAL away]
- (10/11)
- (10/13) [SS away]
- (10/15) Discussion [SS away]
- (10/18)
- (10/20)
- (10/22) Discussion
- (10/25) [ESWeek, EAL away]
- (10/27) [ESWeek, EAL away]
- (10/29) Discussion [ESWeek, EAL away]
- (11/1)
- (11/3)
- (11/5) Discussion
- (11/8) [SS and JR away, tentatively]
- (11/10) [SS and JR away, tentatively]
- (11/12) Discussion
- (11/15)
- (11/17)
- (11/19) Discussion
- (11/22)
- (11/24)
- (11/26) Holiday: Thanksgiving
- (11/29)
- (12/1)
- (12/3) Discussion: Last day of instruction

## Topics

- 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.

- 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).

- From Algorithms to Software
- Complexity and modularity
- Concurrency and parallelism
- Parallel programming for dynamic programming and graph algorithms.

- 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

- Emerging problem spaces: Biosystems, cyber-physical systems, nanotechnology
- 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

- Scheduling dataflow graphs for minimum memory usage.
- 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 .