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