CO1020 Computer Systems Programming
Course Code
CO1020
Course Title
Computer Systems Programming
Credits
5
Course Type
Core
Course Content
Overview of computer systems and the programming process:
Abstractions in software (from algorithms to machine code) and hardware (from silicon to
microarchitecture), Von Neumann machine concept, organization of a computer system
(application software, system software, instructions & microarchitecture, memory, peripheral
hardware such as secondary storage and networking, firmware), the process of building and
executing programs (pre-processing, compiling, assembling, linking, storing/loading, execution
in a GNU/Linux environment)Introduction to C programming syntax:
Comments, variables, data types, type casting, operators, expressions, flow control (conditions,
loops, interrupting loop flow, program termination), statements & blocks, library functions,
basic user inputs & outputs.
Structured programming:
Functions syntax, naming conventions, parameter passing by value and reference, recursion.
Error detection and prevention:
Syntax/semantic/logical errors, compile-time/run-time errors, assertions, debugging tools (GNU
debugger), good practices in programming, testing to verify correctness using proper test cases.
Memory allocation and peripheral I/O:
Memory layout (stack, heap, global data, code/text), stack tracing for debugging, static memory
allocation, arrays, string representation, string manipulation, pointers, structures, file input and
output, network socket programming.
Assembly language programming:
Introduction to assembly syntax using a specified ISA, integer arithmetic and logic operations
using register/immediate operands, branching and conditional execution, function calls, register
conventions, stack operations, nested calls, accessing data memory.
Textbooks and References
- ● Randal E. Bryant, David R. O'Hallaron, Computer Systems: A Programmer's Perspective 3rd Edition, 2015 ● Brian W. Kernighan and Dennis M. Ritchie, The C Programming Language, Second Edition, 1990 ● Jeffrey D. Ullman, Alfred V. Aho, Foundations of Computer Science C Edition, 1994 ● David Patterson, John L. Hennessy, Computer Organization and Design: The Hardware/Software Interface
Course Modules:
Time Allocation details not available for this course
Marks allocation:
Practicals
20%
Assignments
20%
End_exam
60%
Last Update:
| Edit this page