Programming for Hardware/Software Systems

(3-0-3-4)

CMPE Degree: This course is Required for the CMPE degree.

EE Degree: This course is Selected Elective for the EE degree.

Lab Hours: 0 supervised lab hours and 3 unsupervised lab hours.

Technical Interest Groups / Course Categories: CMPE Common Core, EE Common Core

Course Coordinator: Linda M Wills

Prerequisites: ECE 2020 [min C]

Catalog Description

Creation of complex execution and storage mechanisms, based on instruction set architecture, for software design including high-level programming languages and operating systems. Programming design projects.

Course Outcomes

Develop a software design using appropriate data and procedural abstractions given an engineering problem specification 

Implement high-level programming language storage, control, and procedural constructs in the assembly language of a hardware platform.

Use commonly available tools for software development, system management, debugging, performance monitoring, and optimization. 

Develop a software system that uses multiple files and libraries. 

Develop, test, and deploy reliable software using appropriate operating system capabilities (e.g., file and directory access, I/O interface).

Strategic Performance Indicators (SPIs)

N/A

Topic List

  1. Introduction to High Level Language and Assembly Programming
  2. High Level Programming Language Syntax
  3. Processing: ISA datapath and controller
  4. Control: conditionals, iteration, recursion
  5. Storage
    1. static
    2. stack
    3. heap
  6. Supporting Procedural Abstraction
    1. procedure calling
    2. activation frames
  7. Supporting Data Abstraction
    1. structs
    2. arrays
    3. linked lists
    4. hash tables
  8. Compilation, assembly, linking, loading, libraries
  9. File Systems and I/O
  10. Exception and Interrupt Handlers
  11. Software Performance & Reliability
    1. testing
    2. debugging
    3. performance monitoring
  12. Embedded Software
    1. interaction with the execution platform
    2. energy efficiency
  13. Basic Concurrency in Multicore Systems

    1. data-level parallelism
    2. support for atomicity
       

    Optional Advanced Topics:

  14. Dynamic typing
  15. Automatic storage reclamation (garbage collection)
  16. Security issues (e.g., software protection against buffer overflow or heap exploits)