ECE 222 System Programming Concepts


This is the second semester programming course for Computer Engineering majors. It is assumed the student has finished CPSC 111 Introduction to C Programming, or equivalent.

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.

Syllabus


Required Text

System Programming with C and Unix, by Adam Hoover, Addison-Wesley Publishing, 2009.


Optional Texts

Programming in C: A complete introduction to the C programming language, by Stephen G. Kochan, Sams Publishing, 2005.

Other C programming books may be used by the student; this particular text was required in CPSC 111 and so provides continuity.


Instructor notes

Introduction to system programming; debugging; C review

Data types, bit models

Bit masking

Memory map

Arrays, strings, string functions, command line arguments

Pointers

Structures

Program building

Streams, buffers, pipes

Devices

Code organization

Introduction to sorting

System calls

Process system calls

Signal system calls

Libraries; C standard library; curses library, X library

Software licensing; copyright law

It is strongly recommended that students read this material. Additional topics will be covered in class.


Example programs from in class, including those in the course notes. This will be updated throughout the semester.

Topics outline, lab work (subject to change)

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

Last updated March 2009
ECE 222 Page / Clemson / ahoover@clemson.edu