ECE322 T (Systems Programming) Autumn 2018
Tues, Thurs at 5:00 pm in MM-102

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

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