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
1. Introduction, files and editing
- 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
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., CVS
- 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
8. Networking basics
- packet switched vs circuit switched
- Ideas of TCP/IP
- Ping
- Traceroute
- Route tables and netmasks
- Firefox
9. 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
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, 2008 Paul Eggert.
See copying rules.
$Id: syllabus.html,v 1.12 2008/01/04 06:52:49 eggert Exp $