everything.study
E C E 354

MACHINE ORGANIZATION AND PROGRAMMING

3 credits.

An introduction to fundamental structures of computer systems and the C programming language with a focus on the low-level interrelationships and impacts on performance. Topics include the virtual address space and virtual memory, the heap and dynamic memory management, the memory hierarchy and caching, assembly language and the stack, communication and interrupts/signals, compiling and assemblers/linkers.

Topics

Topics explicitly listed in official catalogue description

Prerequisites & course information

Requisites: ( E C E/COMP SCI 252 and COMP SCI 300 ), graduate/professional standing, or declared in the Capstone Certificate in Computer Sciences for Professionals Course Designation: Core GenEd - Mathematics & Quantitative Reasoning Comm QR - Quantitative Reasoning B Breadth - Natural Science Level - Intermediate L&S Credit - L&S Liberal Arts and Science Repeatable for Credit: No Last Taught: Fall 2026 Learning Outcomes: 1. Implement and interpret C programs using standard tools, and relate C language constructs to both assembly language and fundamental computer system structures. Audience: Undergraduate 2. Differentiate, describe, and diagram the memory segments of a process's virtual address space and explain how each is used in C programs. Audience: Undergraduate 3. Describe and diagram how dynamically allocated (heap) memory works, analyze the performance of allocation strategies, and implement a dynamic memory manager in C. Audience: Undergraduate 4. Differentiate memory hierarchy levels, relative performance, and space differences, differentiate between common cache configurations, and appraise the effects of data structures and access patterns on spatial and temporal locality and available memory caching on the performance of C programs. Audience: Undergraduate 5. Diagram a stack trace of execution for function calls in C programs, and explain how the compiler implements the stack with assembly language code. Audience: Undergraduate 6. Write C programs that send and receive signals and respond to exceptional circumstances, and explain the underlying mechanism that enables asynchronous execution. Audience: Undergraduate 7. Identify and summarize the steps required to build an executable program from multiple C source code files and compiled libraries, and describe the processes of linking multiple object code modules to form an executable and loading an executable to run it. Audience: Undergraduate Learning Outcomes: 1. Implement and interpret C programs using standard tools, and relate C language constructs to both assembly language and fundamental computer system structures. Audience: Undergraduate 2. Differentiate, describe, and diagram the memory segments of a process's virtual address space and explain how each is used in C programs. Audience: Undergraduate 3. Describe and diagram how dynamically allocated (heap) memory works, analyze the performance of allocation strategies, and implement a dynamic memory manager in C. Audience: Undergraduate 4. Differentiate memory hierarchy levels, relative performance, and space differences, differentiate between common cache configurations, and appraise the effects of data structures and access patterns on spatial and temporal locality and available memory caching on the performance of C programs. Audience: Undergraduate 5. Diagram a stack trace of execution for function calls in C programs, and explain how the compiler implements the stack with assembly language code. Audience: Undergraduate 6. Write C programs that send and receive signals and respond to exceptional circumstances, and explain the underlying mechanism that enables asynchronous execution. Audience: Undergraduate 7. Identify and summarize the steps required to build an executable program from multiple C source code files and compiled libraries, and describe the processes of linking multiple object code modules to form an executable and loading an executable to run it. Audience: Undergraduate

Sources
Catalogue variants