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.Textbook(s)
Introduction to Computing SystemsCourse 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
- Introduction to High Level Language and Assembly Programming
- High Level Programming Language Syntax
- Processing: ISA datapath and controller
- Control: conditionals, iteration, recursion
- Storage
- static
- stack
- heap
- Supporting Procedural Abstraction
- procedure calling
- activation frames
- Supporting Data Abstraction
- structs
- arrays
- linked lists
- hash tables
- Compilation, assembly, linking, loading, libraries
- File Systems and I/O
- Exception and Interrupt Handlers
- Software Performance & Reliability
- testing
- debugging
- performance monitoring
- Embedded Software
- interaction with the execution platform
- energy efficiency
-
Basic Concurrency in Multicore Systems
- data-level parallelism
- support for atomicity
Optional Advanced Topics:
- Dynamic typing
- Automatic storage reclamation (garbage collection)
- Security issues (e.g., software protection against buffer overflow or heap exploits)