PSU-CS271

From

Jump to: navigation, search

[PSU CS201/Computer Systems Programming] The goal of this course is to introduce computer systems from a software perspective. Teach C and assembly language programming and reading skills. Teach basic systems programming skills and tools. Show how to measure and improve program performance based on an understanding of key aspects of machine architecture.


Upon the successful completion of this course students will be able to:


  • Describe basic computer system organization including the operating system (processes, files, virtual memory) and the underlying hardware (CPU, registers, memory hierarchy).
  • Describe the compilation system (preprocessing, assembling, compiling, and linking) and the function of object/executable files and shared libraries, as well as how basic system utilities such as debuggers and Makefiles work.
  • Write C programs to illustrate basic systems programming concepts, including file I/O, system calls, memory management, exception handling and process management.
  • Do arithmetic in hexadecimal, decimal, octal, and binary notation, and convert among these notations.
  • Explain how data types such as integers, characters, floating point numbers, arrays, pointers, and structures are represented.
  • Describe the basic instruction set architecture for the IA32 family (or similar machine), including the arithmetic/logic instructions, registers, memory model and addressing, and control instructions.
  • Explain how high-level programming constructs such as loops and stack-based function calls are implemented in underlying machine code.
  • Explain how exceptions, traps, and context switches occur and how they are handled at the machine level.
  • Explain the performance impact of hardware features such as pipelining, and architecture principles such as memory locality.
  • Use profiling and timing facilities to identify performance bottlenecks in C programs.



Personal tools
MediaWiki Appliance - Powered by TurnKey Linux