CR: COMP 2401 Learning Objectives
Calendar Description
Introduction to programming with procedures and primitive data types, designed for B.C.S. students. Topics include: arrays, strings, pointers, heap and stack memory allocation and deallocation, iterative and recursive linked list manipulations, system/library calls.
Assumed Background
Learning objectives completed before this course.
Learning Objectives
- Gain experience in understanding and working with portions of an existing code base
- Understand the basics of operating systems
- Gain experience in procedural and low-level programming, including:
- data types and structures
- memory management
- program building
- library functions and system calls
- shell environment and script programming
Topics
Introduction to Operating Systems
Introduction to Systems Programming
- Understand and apply basic programming conventions:
- proper variable names
- appropriate commenting
- indentation using established style
- Understand how to use primitive data types and structures
- bit models and representations
- arrays, strings, structures
- Understand basics of memory management
- variables
- primitive data types
- scope
- storage class
- functions
- pass-by-value
- pass-by-reference
- memory allocation
- static vs. dynamic memory allocation
- pointers, double pointers
- garbage collection
- program memory organization
- function call stack, contents of stack frame
- heap
- data segment
- code segment
- variables
- Program management
- able to build programs across multiple header and source files
- Library functions and system calls
- able to research and understand standard library function and system call documentation
- understand how to create a new library for distribution
- able to program with system calls:
- stream and file I/O
- signal handling
- multiprocess programming
- inter-process communications (sockets, RPC)
- Scripting languages
- understand the basics of shell script programming