Advanced System-Programming Exercises in the Win32 Environment
Sivan Toledo
School of Computer Science
Raimond and Beverly Sackler Faculty of Exact Sciences
Tel-Aviv University
This web site contains system-programming exercises in the Windows
environment. These exercises are designed to serve as programming
assignments in ``Operating Systems'' courses in universities and
colleges, but they are also appropriate for related courses and for
self study.
In a university course, these exercises are designed to be assigned
at a rate of one per week. The scope of each exercise and the API
documentation that each exercise provides allows students with some
programming experience in the C language to complete each assignment
in a few hours. Obviously, the amount of effort required to solve
each exercise varies with the exercise and with the programming proficiency
of the student, but normally, solving an assignment should not take
more than a couple of hours. Obviously, not all exercises can be assigned
in a single 13 or 14-week semester. In Tel-Aviv University, we assign
between 10 and 12 exercises each semester.
We built the exercises according to several principles:
-
Computer-science graduates (and programmers in general) should be
familiar with the entire range of services that the operating system
provides to programs. This familiarity helps students understand the
structure of the operating system and its components, and improves
their programming skills. Therefore, the exercises cover the entire
range of operating-system services, even though they do not cover
each API call (Windows supports hundreds of system calls, so covering
all of them is impractical).
- The best way to cover such a large amount of material is using a series
of relatively small programming assignments. Small weekly programming
assignments allow students to focus on one operating-system service
type in each assignment, they avoid software-engineering issues that
always arise in large programs, and they encourage students to work
throughout the semester.
- To allow students to solve each exercise within a few hours, the assignments
include most of the API documentation that is required. That is, the
system calls and other aspects of the operating-system interface are
documented in the text of the assignment. This documentation allows
students to quickly learn the relevant part of the API.
- Being able to browse and understand the API documentation is an imporant
skill for programmers. To help students acquire this skill, the assignments
sometimes do not include all the required documentation. The students
are encouraged to browse the online documentation and to find out
the missing details. Under windows, this documentation is part of
the Microsoft Developer Network (MSDN), which is available online
at msdn.microsoft.com. The
documentation is also usually installed as part of the development
tools.
While developing these exercises, we also implemented solution programs
to all the exercises. We will be happy to distribute these solutions
to teachers who use these exercises in their courses. We do not make
these solusions available to students, and we ask other teachers not
to distribute our solutions to students.
Hebrew-language programming exercises. The exercises are designed
to teach Win32 system programming. They are intended for use as homework
assignments in Operating Systems courses in universities, but they
are also suitable for self-study. The exercises were prepared by Sivan
Toledo from the School of Computer Science, Raimond and Beverly faculty
of exact sciences, Tel-Aviv University, where they were used in Operating-Systems
courses.
These teaching materials are also available in a printer-friendly
PDF format, as well as in Hebrew.
These teaching materials were prepared by Sivan Toledo from the school
of Computer Science in Tel-Aviv University, where they were used in
Operating-Systems courses. These exercises were prepared with support
from a Curriculum Development Grant from Microsoft Research.
Copyright Sivan Toledo 2004