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. 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
- diff and
patch
- Basics of Makefiles
- Version control systems, e.g., Git, Subversion
- retrieving a tree to build and install
- 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. Parallelism
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–2018 Paul Eggert.
See copying rules.
$Id: syllabus.html,v 1.25 2018/01/06 00:28:57 eggert Exp $