ECE 329 Computer Systems Structures
Fall 2006

In this course students will learn the basics of operating systems, including the creation, management, and scheduling of threads and processes; process communication and synchronization; memory management; file systems; and protection. Programming assignments connect the theory with practice and enable students to further develop their programming skills.



Week Topic Assignment
1 introduction / overview  
2 C/C++ programming languages and tools assignment #1 (9/1 F)
3 computer and O/S structures (Ch. 1-3)  
4 processes and threads on Windows assignment #2 (9/20 W)
5 process synchronization I (Ch. 7)  
6 process synchronization II (Ch. 7) midterm (10/4 W)
7 processes (Ch. 4)  
8 threads (Ch. 5) assignment #3 (10/18 W)
9 C++ programming language  
10 CPU scheduling I (Ch. 6) assignment #4 (11/3 F)
11 CPU scheduling II (Ch. 6)  
12 deadlocks (Ch. 8) assignment #5 (11/17 F)
13 [break]  
14 memory (Ch. 9 and 10) assignment #6 (12/8 F)
15file systems (Ch. 11 and 12)  
16  final exam (12/15 F, 8:00 - 11:00 am)


Textbook and Resources


Lectures and review questions courtesy of Bill Reid:
The C programming language lecture
Chapter 1: Introduction lecture review questions
Chapter 2: Computer system structures lecture review questions
Chapter 3: Operating system structures lecture review questions
Chapter 4: Processes lecture review questions
Chapter 5: Threads lecture review questions
Chapter 6: CPU scheduling lecture review questions
Chapter 7: Process synchronization part1  part2 review questions
Chapter 8: Deadlocks lecture review questions
Chapter 9: Memory management lecture review questions
Chapter 10: Virtual memory lecture review questions
Chapter 11: File system interface lecture review questions
Chapter 12: File system implementation lecture review questions


To complement the theory with practice, students will implement several assignments in C/C++.  Code will be graded on whether it compiles, runs, produces the expected behavior, and is written cleanly.

To turn in your assignment, send a blank email to with the subject line "ECE329-1,#n" (without quotes), where 'n' is the assignment number; and cc the instructor and grader.  (No one reads the body of the email, so anything there will be ignored.)  You must send this email from your Clemson account, because the assign server is not smart enough to know who you are if you use another account.  Attach a zip file containing a readme.txt file (listing the names of the files in your project along with a brief description of how to run your code and what output should be expected), all of your source files, and any other files needed to compile your project, to the email:  *.h, *.c, *.cpp, *.rc, *.dsp, *.dsw.  (Do not include the res, Debug, or Release directories.)  Be sure that this file is actually attached to the email rather than being automatically included in the body of the email (This behavior has been observed in Eudora, for example, but it can be turned off).  Also, be sure to change the extension of your zip file (e.g., change .zip to _zip) so that the server does not block the attachment!!!  We cannot grade what we do not receive.


Grading breakdown:  See the grading chart.

Miscellaneous resources:

Instructor: Stan Birchfield, 207-A Riggs Hall, 656-5912, email:  stb at clemson
Grader: Nikhil Rane, 219 Riggs Hall, 650-6726, email:  nrane at clemson
Lectures: 8:00-9:00am MWF, 227 Riggs Hall