Syllabus for UCLA Computer Science 35L 
Software Construction Laboratory 
[35L home ] 
No textbook has been selected;
   online material will be referred to extensively.
For some of the later labs you will need
a Seeed Studio BeagleBone
Green Wireless Development Board (TI AM335x WiFi+BT) ; make sure you get the wireless version
as opposed to the cheaper plain version. You may wish to get the
higher-priced Seeed
Studio BeagleBone Green Wireless IOT Kit , as this is a superset of
the basic unit needed for 35L, and is used by CS 111 this quarter (and
likely in later quarters, though this is not guaranteed). These units
are available from Seeed, Amazon, Digi-Key, Mouser Electronics, Verical,
and other sources.
Topics, labs and homeworks are tentative and may be changed
   as the schedule progresses.
Lectures 
1. Introduction, files and editing 
 
  Multiuser and multiprocess operating systems 
  GUI basics (e.g., X , Wayland , GNOME , KDE ) 
  CLI basics (e.g.,
    Bash ) 
  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  
  Emacs 
    basics: introduction ,
    online tutorial (C-h t ),
    help  (C-h ? ),
    basic editing ,
    directory editing ,
    running shell commands ,
    building programs ,
    Emacs Lisp .
  
2. Commands and basic scripting 
 
  Unix wildcards, basic regular expressions 
  More advanced commands (e.g.,
   grep ,
   find ) 
  Pipelines and redirection 
  Simple shell scripting 
  Idea of interpreted languages 
  
3. More scripting, VMs, and construction tools 
 
  Basics of Python  
  Java 
   as a compromise between interpreted and compiled languages 
  Building from source
    
  
4. Change management basics 
 
  Basics of Makefiles 
  diff  and
   patch  
  retrieving a package to build and install 
  Basic version control, e.g., Git , Subversion 
   
    committing a change 
    dealing with merge conflicts 
     
  
5. Low-level construction and debugging 
 
  The C compilation and linking process 
  Introduction to C 
  Debuggers and debugging tools, e.g.,
    GDB ,
    Valgrind ,
    strace . 
  
6. Systems programming 
 
  C and system programming 
  Library calls vs. system calls 
  
7. Faults, failures, errors, and holes 
 
  Ways in which a program can go wrong 
  Buffer overruns, and techniques for avoiding them 
  Ken Thompson, Reflections on Trusting Trust  (1984). In 2003 Jon Hall was reported to have said that the paper is not a theoretical speculation. 
  
8. Security basics 
 
  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 
  
9. Advanced change management 
  
    commits 
    branching and merging 
    rebasing 
    branching workflows 
    searching 
    advanced merging and conflict resolution 
    remote branches 
    submodules 
    Git internals 
   
10. The crystal ball 
 
  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 
  
 
 © 2005, 2007–2011, 2014, 2016–2019 Paul Eggert .
 See copying rules . 
 $Id: syllabus.html,v 1.27 2019/09/24 05:36:59 eggert Exp $