Axian Software Consulting and Training

Linux Programming and Introduction to X

 

Custom Classes:

Axian specializes in customizing our classes to meet your specific needs.  Please call or e-mail us with your requirements.

Axian, Inc.

4800 S.W. Griffth Dr., Suite 202, Beaverton, OR 97005

Phone: (503) 644-6106

Fax: (503) 643-8425

info@axian.com

www.axian.com


Call 644-6106, ext. 107

or

e-mail Axian training

for course registration or more information


Course Files and Links:

 

 

 


COURSE OBJECTIVES

Linux Programming and Introduction to X is designed to quickly bring experienced programmers up to speed in a Linux environment. Upon completion of the course, students will be comfortable on a Linux system and will understand the fundamentals of the X Window System.

Students will learn:

  • Programming in C in a Linux environment.
  • Shell programming.
  • Linux Concepts/Techniques including standards and compliance, working with files, processes and signals, inter-process communication, semaphores, messages, shared memory and sockets.
  • Linux Programming in C including makefiles, version control, compiling, linking and debugging.
  • GUI Development using the X Window System including X concepts, basic X programming in C, window attributes, the graphics context, drawing graphics and text, color, events, keyboard and mouse.

TEXTS

  • Beginning Linux Programming by Neil Matthew & Richard Stones
  • Xlib Programming Manual by Adrian Nye
  • Linux/etc by Terry Griffin; articles reprinted from Computer Bits magazine, Nov. 1996 - Jan. 1999

INSTRUCTIONAL APPROACH

This course will be taught in a classroom with one computer per student. The emphasis will be on hands-on programming, with roughly one half of the total time being spent on labs and exercises. The Red Hat 5.2 Linux distribution will be used with the KDE desktop environment.

The class is divided into 23 sessions, each consisting of both lecture and lab. The lectures are intended to be interactive and will include review of the lab assignments. The sessions range from 0.5 hours to 5 hours, and are presented over a period of 5 days.

PREREQUISITES

  • Students should be proficient in the C programming language.
  • Successful completion of Axian's Linux Use and Administration course, or equivalent.

LINUX PROGRAMMING AND INTRODUCTION TO X

Course Outline


  • SESSION 1: Linux Programming: Package Overview
    Topics:
    • ghostview
    • perl
    • java
    • tcl/tk
    • expect
    • tex/latex
    • apache

  • SESSION 2: Linux Programming: Make
    Topics:
    • Makefiles for simple applications
    • more complicated rules
    • making libraries
    • building large projects

  • SESSION 3: Linux Programming: Version control
    Topics:
    • RCS
    • CVS 

  • SESSION 4: Linux Programming: Compilers
    Topics:
    • gcc, g++, ecgs
    • commercially available compilers
    • other languages

  • SESSION 5: Linux Programming: Linking and loading libraries.
    Topics:
    • transition from libc5 to glibc
    • static libraries (*.a, like Windows .LIB)
    • library tools (ar, ranlib)
    • shared libraries (*.so, like Windows DLL)
    • manipulating shared libraries( ldd, ldconfig)
    • stripping executables (strip)
    • ld (loader) 

  • SESSION 6: Linux Programming: Debugging and profiling
    Topics:
    • gdb ( and xxgdb)
    • ddd
    • Electric Fence
    • gprof

  • SESSION 7: Concepts/Techniques: Standards and Compliance
    Topics:
    • Posix compliance
    • Linux standards
    • Living in a heterogeneous world
    • Cross platform issues and portability.

  • SESSION 8: Concepts/Techniques: Working with files
    Topics:
    • Files and Devices
    • System Calls, device drivers
    • Low Level File Access
    • I/O Library
    • File and directory maintenance

  • SESSION 9: Concepts/Techniques: Processes and Signals
    Topics:
    • Process Structure
    • Scheduling
    • Starting New Processes
    • Waiting; zombies, redirection; threads
    • Signals

  • SESSION 10: Concepts/Techniques: Inter-process communication
    Topics:
    • Process Pipes
    • parent and child processes
    • named pipes (FIFO's)

  • SESSION 11: Concepts/Techniques: Semaphores, messages, shared memory
    Topics:
    • Semaphores
    • Shared Memory
    • Message Queues 

  • SESSION 12: Concepts/Techniques: Sockets
    Topics:
    • Socket attributes
    • Using Sockets
    • Socket Addresses
    • Communications
    • Byte Ordering

  • SESSION 13: Concepts/Techniques: Overview of Unix Scripting Languages
    Topics:
    • MS-DOS/MS-Windows Analogy
    • Awk
    • Tcl
    • Perl
    • Python

  • SESSION 14: Concepts/Techniques: Where Java fits in
    Topics:
    • Advantages, disadvantages
    • Java Script
    • Java tools for Linux

  • SESSION 15: X: Overview of GUI Development using the X Window System
    Topics:
    • Versions of X
    • X Window System Concepts
    • X Window System Software Architecture
    • Overview of Xlib

  • SESSION 16: X: Concepts
    Topics:
    • How Xlib works
    • What are windows?
    • Introduction to X Graphics
    • Window Characteristics
    • Introduction to Events

  • SESSION 17: X: Basic Window Program
    Topics:
    • Running the Program
    • The Main of basicwin

  • SESSION 18: X: Window Attributes
    Topics:
    • Setting Window Attributes
    • Window Attribute Structures
    • Program-settable Attributes

  • SESSION 19: X: The Graphics Context
    Topics:
    • Creating and Setting a Graphics Context
    • Switching between Graphics Contexts
    • Controlling the Effect of a Graphics Primitive
    • Line Characteristics
    • Patterning

  • SESSION 20: X: Drawing Graphics and Text
    Topics:
    • Fonts and Text
    • Regions
    • Cursors
    • Bitmap Handling 

  • SESSION 21: X: Color
    Topics:
    • Color Terms and Concepts
    • Allocating Shared Colors
    • Storing Private Colors
    • Standard Colormaps

  • SESSION 22: X: Events
    Topics:
    • Event Processing
    • Event Types
    • The Event Queue
    • Handling Events
    • Selecting Events
    • Sending Events

  • SESSION 23: X: The Keyboard and Pointer
    Topics:
    • The Keyboard
    • The Pointer
    • Border Crossing and Keyboard Focus Events
    • Grabbing the Keyboard and Pointer
    • Keyboard Preferences
    • Pointer Preferences 

LINUX PROGRAMMING AND INTRODUCTION TO X

(c) COPYRIGHT AXIAN, INC. 1999