CR: COMP 2401 Learning Objectives

From Soma-notes
Revision as of 16:43, 11 April 2011 by Claurend (talk | contribs) (→‎Introduction to Systems Programming)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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
  • Program building
    • 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