Skip to content

Schedule

Tentative Schedule

  1. Intro and Embedded Systems
    1. ZyBooks: assignment 1 and assignment02
    2. Basic Electronics
    3. Class Mechanics and Introduction
    4. Arduino and use of digital pins
    5. Arduino and use of analog pins

  2. Design, Abstraction Ladder, and State Machines.
    1. ZyBooks: Chapters 34.2 and missed-assignment2.5
    2. Design Methodologies
    3. Requirements analysis
    4. State Diagrams
    5. Debouncing
    6. Input Devices and Sensing
  3. DAC, Resistor Tree, PWM, and Filtering
    1. ZyBooks: assignment03 and assignment04
    2. More Debouncing (and rolling zeroes algorithm)
    3. Electronics Recap (Kirchhoff’s and Ohm’s Laws)
    4. Digital to Analog Converters
    5. PWM
    6. Signal Processing (Filtering)
    7. Arduino and Assembly; Assembly-based delay
  4. Micro Performance, Optimization, and communication protocols.
    1. ZyBooks: (no explicit assignment for this one)
    2. Measuring and Improving Performance
    3. Performance Optimization Strategies
    4. Communication Protocols
  5. More communication protocols and I2C (Practical).
    1. I2C concepts from Lecture 4; ZyBooks: (no explicit assignment for this one)
    2. Importance of I2C Addresses
    3. I2C wiring
    4. Overall Master-Slave communication steps
  6. Intro to UNIX I/O.
    1. ZyBooks: assignment06
    2. Unix I/O
    3. RIO (robust I/O) package
    4. Metadata, sharing, and redirection
    5. Standard I/O
    6. Closing remarks: Pros and Cons of each
  7. Virtual Memory.
    1. ZyBooks: assignment07 and assignment08
    2. Types of Computer Storage
    3. Physical Addressing
    4. Virtual Memory
    5. Virtual Address Spaces
    6. Page Table + Address Translation
    7. Replacement Algorithms
    8. Simple Memory Systems
    9. Core i7/Linux memory system
  8. Processes.
    1. ZyBooks: assignment08
    2. Exceptional Control Flow
    3. Exceptions
    4. Processes
    5. Process Control
    6. Shells
    7. Signals
    8. Nonlocal Jumps
  9. Memory Allocation.

    1. Basic Dynamic Memory Allocation
    2. Implicit free lists
    3. Advanced Dynamic Memory Allocation
    4. Explicit free lists
    5. Segregated free lists
    6. Garbage collection
    7. Memory-related perils and pitfalls