CSE132: Intro. to Computer Engineering - bsiever/WUSTL-CSE-Curriculum GitHub Wiki

Proposed Learning Outcomes

  • Understanding/application of binary representations

    • Be able to convert Unsigned and Signed (Two's Complement) integers between binary and decimal
    • Be able to convert between hexadecimal to/from binary
    • Be able to explain how encoding of non-numeric concepts, like characters or enumerations, is accomplished
    • Be able to justify the choice of floating point representations vs. integer representations in a particular context
    • Be able to perform unit conversions common in digital systems (e.g., sensor readings to appropriate unit)
  • Understanding heterogeneous systems

    • Be aware that data types and ranges vary with systems
    • Be able to explain importance of byte ordering concerns when exchanging multi-byte information between platforms
  • Be able to explain the deficiencies that may arise due to blocking code

  • Be able to create a state machine diagram for a described scenario

  • Be able to implement a state machine in code from a diagram

  • Be able to implement event driven code, where events are based on both I/O and timing periods

  • Be able to analyze timing of periodic tasks

  • Be able to multiplex outputs for digital control

  • Be able to explain the need for primitive filters on analog data

  • Be able to implement filters (rolling average)

  • Understand basic digital circuits

    • Be able to wire a polarized device
    • Be able to calculate resistance needed to conform to current limits (when there are differing constraints)
  • Able to implement an asynchronous serial communication protocol

  • Be able to explain basic memory organization (explain arrays of bytes and computing locations from the array's base)

  • Be able to explain the need for stack and register conventions and/or problems if they conventions are not adhered to

  • Be able to implement control logic (loops, if-statements, branching) in assembly language

  • Be able to implement operations on multi-byte data in assembly language

  • Be able to utilize and explain the use of flags (as in CPU specific flag registers) in assembly language

  • Write assembly language functions for modest tasks using register/stack conventions

  • Be able to convert analog to digital values into appropriate units for a sensor measurement given sufficient data (e.g., analog reference and a summary of a data sheet for a sensor)

  • Be able to explain and quantify the precision of a value that's derived from analog-to-digital conversion analog reference and to read and interpret analog data

  • Be able to choose appropriately between digital and analog I/O and make use of them correctly for a particular problem when given description of hardware and software needs

  • Be able to instrument system to observe what is really going on (e.g. print statements, protocol messages, LEDs, etc.).

  • Be able to reason about expected code or system behavior (what should the system do?)

  • Be able to locate a bug by getting observability into the system at different points and finding the bug between correct (expected) and incorrect behavior

  • Be able to read relevant information from a datasheet to use a component (e.g. an electronic device)

  • Be able to read relevant information from reference documentation (e.g. Arduino reference or Java documentation) to learn about and use new or unfamiliar library functions in programs