Introduces systems-level programming concepts using the C language and assembly language, and explores the correspondence of programming constructs in these languages. Topics include internal data representation, basic instructions and control structures, bitwise operations, arithmetic operations, memory management, pointers, function calls and parameter passing, linking, and loading. Included is an overview of computer architecture and organization topics, including von Neumann architecture, the memory hierarchy, and basics of pipelining.
Prerequisite
C or higher in CSE 214 or co-requisite CSE 260 and CSE major
Course Outcomes
An ability to determine the machine-level representations of primitive and structured data types.
An ability to determine the corespondence of program constructs written in C and in assembly language.
An ability to implement non-trivial algorithms, and both static and dynamic data structures, in the C programming language.
Textbook
Required:
C Programming: A Modern Approach, 2nd ed. by K. N. King. W. W. Norton & Company, 2008.
References:
C Programming Language, 2nd ed. by Brian W. Kernighan and Dennis M. Ritchie. Pearson, 1998. 978-0131103627.
Digital Design and Computer Architecture, 2nd ed. by David Harris and Sarah Harris. Morgan Kaufmann, 2013. ISBN-13: 978-0-12-394424-5.