Description
This course is the first part of a two semester sequence, Computer Systems I and II. The goal of this sequence is to bridge the gap between high-level programming and actual computer systems -- processors, caches, operating systems, compilers and linkers. Computer Systems I comprises three major parts: machine organization and assembly language programming, C program design and development, and operating system tools. Unix will be used as a running example.
Note that this is a class on systems concepts, not on C programming. Most of the basic constructs such as if statements, loops, function syntax, switch case statements and operators are the same in C and Java, and you are expected to know them from CSC 1052. You will have a chance to refresh your knowledge on these topics using the online zyBook Programming in C. However, class time will be dedicated only to those programming features that are different in C and Java and that are relevant to systems topics.
Specific Outcomes
- Differentiate between different internal formats to represent numerical data
- Develop an ability to explain of the role of the basic computer system components
- Enhanced programming skills through the development, testing and debugging of C programs in Unix
- Develop an appreciation of the need for security and ethics in computer use
Prerequisites
- CSC 1052 (Algorithms and Data Structures II)
- CSC 1300 (Discrete Structures)