1 | Due Sunday 16th September | ||||
Interact with the named-places data. | |||||
2 | Due Wednesday 10th October | ||||
A very basic shell | |||||
3 | Due Sunday 4th November | ||||
Make a program that behaves just like "ls", except... | |||||
4 | Due Sunday 25th November | ||||
A better shell: shell variables and aliasses | |||||
5 | Due Sunday 2nd December | ||||
An even better shell: pipes and redirection | |||||
6 | Due Sunday 9th December | ||||
Binary file processing | |||||
Deadline - Last day anything (except the final project) can be accepted for grading: 13th December. |
Class 1 | Tue 21‑8‑2018 | A quick introduction all round. First part of strings in C: strcpy and strlen. | ||||
Class 2 | Thur 23‑8‑2018 | More char * functions, getchar and putchar, using malloc and free, printf, gets. Building a binary tree in C. | ||||
Class 3 | Tue 28‑8‑2018 | fgets, strcmp, strcasecmp, ctype.h, and strtok. Building an array of strings - a convenient string tokeniser. | ||||
Class 4 | Thur 30‑8‑2018 | Remember malloc()s and free()s should be matched one-to-one. Multiple file compilations - .c, .h, and .o files. Instead of reference parameters, C has to use pointers. strtol, strtof, and strtod. printf formats. | ||||
Class 5 | Tue 4‑9‑2018 | fopen/fclose, printf/sprintf/fprintf, scanf/sscanf/fscanf, getchar/puthcar, fgetc/fputc, ungetc, gets/fgets, puts, fputs. Environment variables, the setenv command and getenv function. | ||||
Class 6 | Thur 6‑9‑2018 | scanf's size prefixes h, hh, *, and l. weather.txt: a biggish uncompressed data file, fread and fwrite, creating a binary file from text data. fseek and ftell, Binary chop search on a binary file. | ||||
Class 7 | Tue 11‑9‑2018 | Fork() to create a sub-process. Comparing the contents of two trees with parallel processing, Capturing the output of ls -l as a subprocess (first stage). | ||||
Class 8 | Thur 13‑9‑2018 | Using pipes and forks to: Capture the output from a program, Connect the output of one program to the input of another, and Redirect the output from a program to a file. How to make the shell do all this for us too. | ||||
Class 9 | Tue 18‑9‑2018 | Files and directories; the major partitions; important files in /etc. opendir, readdir, closedir. stat and the contents of the struct stat. getpwuid, getpwnam. time functions and structs. | ||||
Class 10 | Thur 20‑9‑2018 | The case study: an alphabetical list of usernames and real names. | ||||
Class 11 | Tue 25‑9‑2018 | Making a very basic shell. execvp and wait. Signals. | ||||
Class 12 | Thur 27‑9‑2018 | Bit operations. | ||||
Class 13 | Tue 2‑10‑2018 | Regular Expressions. regcomp and regexec's man page, and an example, and with multiple matches. ed's man page. | ||||
Class 14 | Thur 4‑10‑2018 | Internet functions. A sample TCP server and client. | ||||
Class 15 | Tue 9‑10‑2018 | Investigating the HTTP protocol; we made a very basic (and unsafe) web server. | ||||
Class 16 | Thur 11‑10‑2018 | UDP programming: send, receive. | ||||
Class 17 | Tue 16‑10‑2018 | Review day. | ||||
Class 18 | Tue 23‑10‑2018 | Test day. A sample. | ||||
Class 19 | Thur 25‑10‑2018 | Introduction to shell programming under tcsh. | ||||
Class 20 | Tue 30‑10‑2018 | Going over the test, questions 3 and 2. | ||||
Class 21 | Thur 1‑11‑2018 | More about binary files. | ||||
Class 22 | Tue 6‑11‑2018 | Make-up test day. | ||||
Class 23 | Thur 8‑11‑2018 | Doing things with the shell: Getting rid of badly named files: A program that does what rm -i does, Using expressions and globs in shell commands and scripts: A script that finds my oldest file. | ||||
Class 24 | Tue 13‑11‑2018 | More about binary files, More about fork, exec, wait, and pipe. Quick introduction to Posix threads. | ||||
Class 25 | Thur 15‑11‑2018 | More about internet programming and bit operations. | ||||
Class 26 | Tue 27‑11‑2018 | Second Test, A sample, Some additional questions. | ||||
Class 27 | Thur 29‑11‑2018 | Threads and mutexes. | ||||
Class 28 | Tue 4‑12‑2018 |