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 $