Graphical User Interfaces

Exam 3, Due May 22, 2001

Discussion Group for this class
Team sign up

Prerequisites: Some knowledge of C++ and object oriented programming.

Important links

Goals of this course:
To teach the student:

  1. Design issues involved in developing GUI programs
  2. High-level rapid prototyping languages for GUI development.
  3. Assembling the components of a GUI project.

Homework Assignments

Course outline

  1. Introduction to the course.
  2. General concepts of GUI programming
  3. Using the Gnome Desktop (Most people running Linux will not need this).
  4. Basic GTK+ widgets
  5. Geometry management

Term project

Perl/Tk API

  1. Introduction to the Perl language
    1. Basic Perl data types
    2. Scalar vs composite data: arrays and hashes
    3. Coding Perl functions
    4. References.
  2. Object-oriented programming in Perl
    1. Packages and classes
    2. Constructor functions in Perl. User-defined storage layout.
    3. Class methods vs Instance Methods
    4. Perl garbage collection.
  3. Perl/TK
    1. Basic widgets: MainWindow and Label. Mainloop.
    2. Geometry management: the pack method.
  4. References in Perl: use of prefix to dereference.
    1. Complex literal data structures.
    2. Multiple ways of dereferencing.
  5. Buttons in Perl/Tk.
    1. Check buttons, radio buttons
    2. Variable references, sharing a variable
  6. Geometry management: the grid widget.
  7. The Entry widget
    1. Retrieving user input from an entry widget
    2. Index-strings --- an introduction to the Text widget.
    3. Second assignment: desk calculator.
  8. The Text widget
    1. Options for creating
    2. Index strings
    3. Editing text.
    4. Inserting pictures and other widgets into the Text widget.
  9. Object-oriented design techniques.
    1. Third assignment: simple spreadsheet program.
  10. The Canvas widget.
    1. Tags and groups of items.
    2. General graphical operations.
    3. Item attributes.
  11. Background on Term project: parsing and scanning text in Perl.
  12. Concurrency in Perl/Tk: cooperative verses preemptive multitasking.
    1. Use of the update method.
    2. Unblocking CPU intensive phases of a GUI program.

Other GUI design systems

  1. the Qt library
  2. wxWindows
  3. GUI applications in Python.

Software


  1. wxWindows
  2. Troll Tech and the Qt widget set
    Note: the free version is only available for Unix platforms.
  3. TK/TCL
  4. Lesstif (a free Motif clone)
    Lesstif documentation
  5. KDE --- a complete (free) Unix desktop system written using Qt
  6. Amaya --- experimental web browser built using Lesstif
  7. GnuStep (an Objective-C GUI development system based on the Next machine)

Justin R. Smith

Last modified: Mon Aug 13 12:58:57 EDT 2001