IC221: Systems Programming (SP14)

Home Policy Calendar Syllabus Resources Piazza

Course Syllabus

  1. Intro UNIX and the Operating Systems
    1. OS Services: Process Management, Memory Management, File System, Networking
    2. Unix Shell Interface and API: bash and System Calls
    3. C Programming Language and System Call API
    4. Inter-Process Communication
    5. OS I/O Interfaces and Networking
  2. Unix command line tools
    1. Navagitation: ls, cd, mv, pwd
    2. Man Pages: man
    3. Command Line I/O: echo, cat, pipes, redirects
    4. File Parsing/Processing: head, tail, cut, sort, uniq, sed, grep, find
    5. File Permissions: chmod, chown, chgrp
  3. bash scripting
    1. Local and Environment Variables: export, $PATH, $EDITOR, $MANPATH
    2. Command Substitution: $(command), `command`
    3. String and Arithmetic Comparators
    4. Conditionals: if, then, else, elif, fi
    5. Control Flow: for,while, do,done
  4. C Programming
    1. Why C? And C vs C++
    2. C Basic Types, Arrays, and Structs
    3. C Program Compilation: gcc, clang, make
    4. C Preprocessor and Compilation Units
    5. C Pointers: referencing, dereferencing, adressing
    6. C Strings and Command Line Args: char * , char[] , argv
    7. C Format Input and Output: printf(), scanf()
    8. Memory Management: malloc , calloc, free,
    9. Memory Leaks: valgrind
    10. Debugging C programs: gdb
  5. C Systems Programming
    1. The OS'es role
    2. Library Functions and System Call: unistd.h, stdio.h
    3. System Call I/O: read(), write()
    4. Error Checking System Calls: errno, perror()
    5. Process I/O: STDIN_FILENO, STDOUT_FILENO, stdin, stdout, fprintf()

    6-week Mark
  6. Processes Creation and Management, and Communication
    1. Process Creation: fork(), exec(), wait()
    2. Process Management: getpid(), getppid()
    3. Signals: alarm(), signal(), killpid()
    4. Process State: running, waiting, blocked
    5. Monitoring Process: ps, top, /sys
    6. Pipelines: dup2
    7. Process Groups and Jobs: getpgid(), setpgid()
    8. Foreground and Background: fg, bg
  7. File System and Memory
    1. File System Design: FAT, inode
    2. File System I/O: fopen(), open()
    3. Linking: link(), symlink(), ln
    4. Memory Layout: stack, heap, and mmap()

    12-week Mark
  8. Network I/O
    1. Network Basics: the protocol stack
    2. Client Server Model
    3. Network Addressing: hton, ntoh, inet_pton,
    4. Socket Programming: socket(), bind(), listen, accept, connect recvfrom(), sendto
  9. Concurrency:
    1. Threading with Pthreads
    2. Race conditions and Atomic Operations
    3. Semaphores and Deadlocks

Last modified: Sat Dec 21 15:47:57 EST 2013