ECE Course Outline

ECE2035

Programming for Hardware/Software Systems (3-3-4)

Prerequisites
ECE 2020/2030 [min C]
Corequisites
None
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)
Patt & Patel, Introduction to Computing Systems (2nd edition), McGraw-Hill, 2004. ISBN 0072467509, ISBN 978-0072467505 (required)

Topical Outline
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
   a.	static
   b.	stack
   c.	heap

6.	Supporting Procedural Abstraction
   a.	procedure calling
   b.	activation frames

7.	Supporting Data Abstraction
   a.	structs
   b.	arrays
   c.	linked lists
   d.	hash tables

8.	Compilation, assembly, linking, loading, libraries

9.	File Systems and I/O

10.	Exception and Interrupt Handlers

11.	Software Performance & Reliability
   a.	testing
   b.	debugging
   c.	performance monitoring

12.	Embedded Software
   a.	interaction with the execution platform
   b.	energy efficiency

13.	Basic Concurrency in Multicore Systems
   a.	data-level parallelism
   b.	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)