ECE 329 Computer Systems Structures
Fall 2008

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 I/O. Programming assignments connect the theory with practice and enable students to further develop their programming skills.



Week Topic Assignment
1 introduction / overview (1.1-1.11)  
2 C/C++ programming languages and tools assignment #1 (9/5 F)
3 processes and threads (2.1-2.2)  
4 thread synchronization (2.3-2.4) assignment #2 (9/19 F)
5 scheduling (2.5)  
6 memory management (4.1-4.2) midterm (10/3 F)
7 virtual memory: paging and segmentation (4.3, 4.8)  
8 page replacement algorithms (4.4-4.7) assignment #3 (10/22 W)
9 I/O (5.1-5.9)  
10 file systems (6.1-6.4) assignment #4 (11/7 F)
11 multiprocessor systems (8.1-8.3)  
12 Unix / Linux (10.1-10.8) assignment #5 (11/25 T)
13 [break]  
14 Windows / IA-32 (11.1-11.10) assignment #6 (12/5 F)
15deadlocks (3.1-3.7)  
16  final exam (12/11 Th, 11:30 - 2:00)


Textbook and Resources

Resources for current students (restricted access, not open to the public)


To gain practical experience with the principles of the course, you will implement several assignments in C/C++.  As shown in the grading chart, code will be graded on whether it compiles, runs, produces the expected behavior, is well documented, and and is written cleanly.  Your code must compile and run on Visual C++ 6.0 SP6.

To turn in your assignment, send an email to (and cc the instructor and grader) with the subject line "ECE329-1,#n" (without quotes but with the # sign), where 'n' is the assignment number.  You may leave the body of the email blank.  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), and all of the files needed to compile your project (such as *.h, *.c, *.cpp, *.rc, *.dsp, *.dsw; do not include *.ncb, *.opt, *.plg, *.aps, or the res, Debug, or Release directories).  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.  (E.g., do not use  Be sure that this file is actually attached to the email rather than being automatically included in the body of the email (Eudora, for example, has been known include files inline, but this behavior 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.  (Also be sure that you're not hiding extensions for known types; in Windows explorer, uncheck the box "Tools.Folder Options.View.Hide extensions for known file types".)



Instructor: Stan Birchfield, 207-A Riggs Hall, 656-5912, email:  stb at clemson
Office hours:  2:00-4:00pm, F, or by appointment
Grader: Vidya Murali, 015 Riggs Hall, vmurali at clemson
Lectures: 8:00-9:00am MWF, 223 Riggs Hall