Syllabus for UCLA Computer Science 35L
Software Construction Laboratory
No textbook has been selected;
   online material will be referred to extensively.
Topics, labs and homeworks are tentative and may be changed
   as the schedule progresses.
Lectures
Introduction, files and editing (2007-09-27 – 2007-10-03)
 
  - Multiuser and multiprocess operating systems
 
  - GUI basics (e.g., X, Gnome, KDE)
 
  - CLI basics (e.g.,
    Bash,
    xterm)
 
  - Unix file system layout
 
  - Everything is a file — device files
 
  - Unix permissions
 
  - Basic commands:
    ls;
    pwd,
    cd,
    mkdir,
    rmdir;
    echo,
    cat;
    cp,
    mv,
    ln,
    rm;
    chmod,
    kill,
    ps
 
  - Documentation and
   man
   pages
 
  - Text editors: emacs &
   vi
 
 
Commands and basic scripting (2007-10-04 – 2007-10-10)
 
  - Unix wildcards, basic regular expressions
 
  - More advanced commands (e.g.,
   grep,
   find)
 
  - Pipelines and redirection
 
  - Simple shell scripting
 
  - Idea of interpreted languages
 
 
More scripting, VMs, and construction tools (2007-10-11 – 2007-10-17)
 
  - Basics of Python
 
  - Java
   as a compromise between interpreted and compiled languages
 
  - Building from source
   
 
 
Change management (2007-10-18 – 2007-10-24)
 
  - diff and
   patch
 
  - Basics of Makefiles
 
  - Version control systems, e.g., CVS
   
    - retrieving a tree to build and install
 
    - committing a change
 
    - dealing with merge conflicts
 
   
 
 
Low-level construction and debugging (2007-10-25 – 2007-10-31)
 
  - The C compilation and linking process
 
  - Introduction to C
 
  - Debuggers and debugging tools, e.g.,
    GDB,
    Valgrind,
    strace.
 
 
Systems programming  (2007-10-31 – 2007-11-07)
 
  - C and system programming
 
  - Library calls vs. system calls
 
 
Faults, failures, errors, and holes (2007-11-08 – 2007-11-14)
 
Networking basics (2007-11-15 – 2007-11-21)
 
  - packet switched vs circuit switched
 
  - Ideas of TCP/IP
 
  - Ping
 
  - Traceroute
 
  - Route tables and netmasks
 
  - Firefox
 
 
Security basics (2007-11-26 – 2007-11-29)
 
  - Threats, including eavesdropping, tampering, forgery,
    and denial of service
 
  - Authentication, authorization, and accounting
 
  - Chains of trust
 
  - Firewalls, kernels, and sandboxes
 
  - Intrusion detection
 
  - Backups
 
  - Security policies
 
 
The crystal ball (2007-12-03 – 2007-12-06)
 
  - Trends in computing research and development
 
  - Things to increase your chances at grad school: research, 199's, etc
 
  - Other general tips for excelling in upper division classes
 
 
 $Id: syllabus.html,v 1.11 2007/09/24 00:49:39 eggert Exp $