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 $