Instructor: T. Pavlidis (theoATsbcsDOTsunysbDOTedu)
Time: MWF 3:20-4:15pm (starting January 15)
Place: Room CS 2210
Event Driven Programming underlies all modern window systems such as X and the various Microsoft Windows. Event driven programs have a structure that is quite different from batch programs and when run under a window system, they must rely on the window software facilities that tend to be quite complex. As a result a ``Hello World'' program can be 30-40 lines of C code when written either in Motif or Windows 95. This course will cover the underlying concepts of such systems focusing on X but also including examples from Windows 95.
The course will use in the beginning a Starter Toolkit for X Windows that lets you write a ``Hello World'' with two lines of code and interesting programs (such as video games) with a few hundred lines of code. Advanced functions from Xlib and Xt will be introduced gradually leading to general programming in X including widget writing. The following is a tentative outline.
* Introduction to window systems, basic structure of X and Windows 95.
* Event handling in X and Windows 95.
* Specific topics: Menus, colormaps, text entry, icons, and pixmaps.
* Animation programs using background processes.
* Communication between applications - selections.
* Examples of widgets and toolkits such as Motif.
* Writing graphic front ends for existing programs using two-way pipes.
* Effect of the differences in X and Windows 95 for complex programs.
* Widget writing.
While the course will not teach programming in a specific system (such as Motif or Windows 95), it will make it much easier for you to learn ANY such system after you have completed this course.
Text: T. Pavlidis, ``Fundamentals of X Programming,'' classnotes.
Prerequisite: Programming experience in C. There are no theoretical prerequisites but the course will be fast paced and assume that students have already written nontrivial batch programs in C.
Undergraduate CS majors interested in the course should send e-mail to the instructor about possible arrangments.