ECE322 T Systems Programming, Autumn 2024
Tues, Thurs at 5:05 p.m. in MM 202

The Book

Examinations:

Assignments

Submit assignments through blackboard. Only blackboard, don't email them.
code, comments, and basic demonstration of it working, in one happily readable document.
If you have a question, don't include it with your work for the assignment because then you won't get an answer until I reach your submission when grading. For questions, email me or get me after class, or in my office.

     1   Due Friday 13th September.
     Interact with a linked list of named places.   
2 Due Friday 27th September.
Make your own shell, part one.

PC log in - use Putty or your own preferred SSH app.
OR mac users: start the terminal app, windows users: start powershell, then type the command
ssh username@rabbit.eng.miami.edu and type your password when prompted.
Windows users beware: you can't use ctrl-V in pico, but page up and page down will do the job.

Class History

Class 1 - Tue 20-8-2024    Quick introductions, things to come:
C programming,
Unix using and programming,
Shells, commands, and scripts,
Processes,
Files, beyond merely reading and writing them,
Communications between programs,
Operations,
Utilities.
Class 2 - Thur 22-8-2024 Starting C.
Major differences from C++.
Strings. We looked in detail at strlen, strcmp, and strcat.
Class 3 - Tue 27-8-2024 #include <string.h>, very important strdup;
It is possible to re-create useful C++ features in C.
A very basic introduction to compiler directives.
A first look at macros, their benefits and extreme dangers. cc -D
Class 4 - Thur 29-8-2024 Where is the source code? Doesn't really matter, it is incomprehensible.
Building our own strtok with static variables.
Implementing a binary tree in the normal C way.
Class 5 - Tue 3-9-2024 Everything (i.e. not much) about gets and fgets.
All the useful printf formats and some scanf too.
Picking up with the tree insert method (done new_node, new_tree, find, and print).
creating processes fork, execlp, exit, wait; running a program from a program.
Fork bombs and quotas, perror, ^Z suspending a process, a few signals.
Class 6 - Thur 5-9-2024 Signals: sending, receiving, ignoring.
execl, execlp, execv, execvp.
WIFEXITED, WIFSIGNALED, WEXITSTATUS, WTERMSIG, the ls -l example again.
Unix file functions, open, close, read(file, pointer, number), write, pipe, dup.
O_RDONLY, 0_WRONLY, O_RDWR, O_TRUNC, O_CREAT, O_APPEND, O_EXCL, O_NONBLOCK, O_SHLOCK, O_EXLOCK.
redirecting output, capturing output.
Class 7 - Tue 10-9-2024 redirect 0 and 1 with a.out >& name. Both is illogical: (a.out > name2 ) >& name1. Remember /dev/tty
sort out capturels.c.
The program that caputures ls -l output to find total size of all files.
some meteorological data. and the program that shrank it to 34%.
Class 8 - Thur 12-9-2024 fopen's "r", "w", "a", "r+", "w+", "a+", "wx", "w+x", and adding "b" to the end. What does binary file really mean?
Unix and C versions of read, write, and seek.
Binary chop search on a file.
Sorting a file (but with slow old selection sort).
How merge-sort works well for files.
Class 9 - Tue 17-9-2024 Give them a quick reminder about gdb (done).
Experimentally discovering what's in a directory. (you can't run this program except as root) ...
... so: the setuid bit and how to take over any unix system.
I-nodes and inode numbers (sometimes file number) unique identifier and root of structure for a file in a disc.
readdir/dirent, the permitted way to read directories.
stat - function and struct to get metadata of files - size, mode, inode, device, uid, etc.
Class 10 - Thur 19-9-2024 All the things that stat will tell you, file mode and type not quite the same thing.
Pipes and named pipes.
Hard links and soft/symbolic links, no hard links to directories because reference counts don't work.
Times, time_t, struct timeval, struct tm; time(), localtime(), etc.
The example of everything.
qsort.
Class 11 - Tue 24-9-2024 Cooperative processes, comparing two trees: the starting skeleton program.
This is the final version of the tree comparing program.
Starting on built-in shell commands and script programming.
Class 12 - Thur 26-9-2024 Lots more on the built-in commands.
Our first useful shell script, a very basic backup utility.
Class 13 - Tue 1-10-2024 A new class you should know about for next Spring.
/etc/csh.login, /etc/csh.cshrc, ~/.login, ~/.cshrc
setting and getting effective and real uis and gid, the su command.
bit stuffing, just a quick exploration today.
Class 14 - Thur 3-10-2024 Bit stuffing, more prettily.
Regular expressions: pico, egrep, an example of regcomp and regexec.
Class 15 - Tue 8-10-2024
Class 16 - Thur 10-10-2024 regcomp and regex with multiple matches.
Counting the number of 1s in a 32 bit number.
Day Off 15th
Class 17 - Thur 17-10-2024 Review for test as needed.
Class 18 - Tue 22-10-2024 First mid-term: a fairly recent sample. Possible topics are:
        C programming and working with strings.
        Processes, fork, exec..., wait, pipe, redirecting i/o.
        File operations, inc. binary, with FILE * f or int fd.
        Using information about files and directories.
Class 19 - Thur 24-10-2024
Class 20 - Tue 29-10-2024
Class 21 - Thur 31-10-2024
Class 22 - Tue 5-11-2024
Class 23 - Thur 7-11-2024
Class 24 - Tue 12-11-2024
Class 25 - Thur 14-11-2024
Class 26 - Tue 19-11-2024
Class 27 - Thur 21-11-2024
Break 26th to 29th
Class 28 - Tue 3-12-2024