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 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. |