EEN322 T (Systems Programming) Autumn 2014
Tues, Thurs at 5:00 pm in MM-109

The Book

Examinations:

Assignments

Submit by email to grader322 at rabbit.eng.miami.edu with subject line = your name + which assignment,
code, comments, and basic demonstration of it working, in one happily readable document.
     1    Due Tues 16th September
                Shell input processing (basic)     
2 Due Tues 23rd September
Shell, part one
3 Due Tues 28th October
Useful backup utility
4 Due Sat 6th December
Internet chat service
5 Due Sun 14th December
Give your shell a scripting language.
Deadline - Last day anything (except the final project) can be accepted for grading: Sun 14th December.

Class History

Class 1  ‑ Tue 26‑8‑2014   Quick introductions, a little bit about old-fashioned C. The secrets of separately compiled libraries, and exit codes.
Class 2  ‑ Thur 28‑8‑2014 Processes and Shells; the useful od and which commands, shell variables.
A simple shell script for compiling and running.
starting with execlp (example) and fork - make sure you understand what this sample does.
Class 3  ‑ Tue 2‑9‑2014 The lost day.
Class 4  ‑ Thur 4‑9‑2014 Some real systems programming: waiter, shower, runner.
Putting the fork/exec/wait/exit family together properly with execlp, and with execvp.
int getchar(void), void putchar(int), and EOF.
Class 5  ‑ Tue 9‑9‑2014 C strings. strlen, strcpy, strncpy, strcmp, strcasecmp.
Class 6  ‑ Thur 11‑9‑2014 strtok, how it works, especially the static variable.
strtol, especially its second parameter.
the sizes of integers.
gets and fgets.
Class 7  ‑ Tue 16‑9‑2014 Dynamic allocation of memory with malloc and free.
Reading a line of user input no matter how long it is.
Creating and dealing with a (char * *) pointer to an array of strings, like argv.
Class 8  ‑ Thur 18‑9‑2014 Handling connected data structures, a linked list for example.
Operator priorities.
Class 9  ‑ Tue 23‑9‑2014 C File input and output: the starting point, the safe version,
Saving the data to a file (fprintf), reading it back (fscanf).
Class 10  ‑ Thur 25‑9‑2014 Microsoft visiting 7th - 8th October: notice one, notice two.
/etc/login.conf, moving sex in struct, printf's h and hh modifiers.
sprintf and sscanf: sscanf used with fgets is more reliable than fscanf alone.
Unix file input and output: open, read, write, close.
Class 11  ‑ Tue 30‑9‑2014 const is not what we might expect, * in printf, perror, lseek (fseek/ftell).
Using stat and fstat.
Time functions.
Directory functions.
Class 12  ‑ Thur 2‑10‑2014 Shell variables, command line substitutions, the four kinds of quotes, using the path
Environment variables, aliasses, redirecting input and output to files or other programs.
Class 13  ‑ Tue 7‑10‑2014 The problem of comparing two binary search trees to see if they contain the same data regardless of shape, solved neatly by inter-process communication: the pipe. Don't forget to close the unnecessary ends. Here's the code.
Named pipes, listed in the file system, are accessible to unrelated processes. Examples: writing, and reading.
Class 14  ‑ Thur 9‑10‑2014 The ins and outs of inter-process communication with pipes, particularly applied to running another program and conveniently communicating with it through its stdin and stdout. fdopen is useful.
Class 15  ‑ Tue 14‑10‑2014 Test day - Important topics.
Little Break
Class 16  ‑ Tue 21‑10‑2014 Useful and important bit manipulations.
Class 17  ‑ Thur 23‑10‑2014 signals, and beginning to look at the internet.
Class 18  ‑ Tue 28‑10‑2014 Details of internet communications: pptx, ppt.
Class 19  ‑ Thur 30‑10‑2014 Beginning to think about how scripting languages work.
Class 20  ‑ Tue 4‑11‑2014 The separate input system / error reporter and lexical analyser; making tokens and tree nodes of all sorts of different shapes and sizes.
Class 21  ‑ Thur 6‑11‑2014 Parsing.
Class 22  ‑ Tue 11‑11‑2014 Where we've got with parsing.
Class 23  ‑ Thur 13‑11‑2014 Setjmp and longjmp really can be useful.
The full nature of recursive interpreters.
Useful but arcane shell operations.
Class 24  ‑ Tue 18‑11‑2014 Guest lecture day, the slides.
Class 25  ‑ Thur 20‑11‑2014 uids and gids, /etc/passwd, the real contents of a directory.
hard and soft/symbolic links, su, root, and wheel.
Break
Class 26  ‑ Tue 2‑12‑2014 Review day.
Class 27  ‑ Thur 4‑12‑2014 Test day - Important topics.
Class 28  ‑ Tue 9‑12‑2014 Github, CVS, etc., from Elliot.
Things to learn from the test.
Thur 11‑12‑2014 Final Exam..
Sun 14‑12‑2014 Last day anything (except for final project) can be accepted for grading.