This course has three goals. First, it teaches the tools available in a unix/linux operating system for program development. These tools include standard libraries, system calls, the shell environment, system programs, and the basic unix/linux file system structure. Second, it is intended to rigorously develop the C and linux programming skills of students. Towards that end, programming assignments will be given weekly. Third, it is intended to introduce students to code reading and the principles of code management. Each week in class, time will be spent examining existing code, to fix bugs, extend features, and to learn programming style, principles, and practices.
Other C programming books may be used by the student; this particular text was required in CPSC 111 and so provides continuity.
Week | Topic(s) | Lab (week due) |
1 | Introduction to system programming; debugging; C review | |
2 | Data types, bit models, bitwise operators | C review |
3 | Arrays, strings, memory map | binary math |
4 | Test #1 ; String functions, command line arguments | string math |
5 | Pointers | spell check |
6 | Structures; mixing arrays, structures and pointers | memory scan |
7 | File I/O; buffering; file system | code breaking |
8 | Miterm ; program building | |
9 | Streams, devices | directory listing |
10 | System calls; program organization | vectors and matrices |
11 | System calls (processes); IPC (signals) | spreadsheet |
12 | Test #3 ; math library | triangles |
13 | Curses library; blocking, buffering, echoing (I/O) | base to bombadeer |
14 | X library; events, graphics context | space invaders |
15 | Software licenses | xpaint |
16 | Final | license review |