Exelis Visual Information Solutions offers introductory, intermediate and advanced courses in IDL. Classes are held year round and can be customized to meet your unique requirements. Our expert instructors focus on your goals and how you can best utilize our tools to achieve them.


Getting Started with IDL (IDL 100 - 3 days)


Introduction to IDL is a three-day course that provides scientists, engineers and developers with a working knowledge of the IDL programming language. Through a mixture of lectures, instructor-led exercises and challenge problems, this course significantly shortens the startup time for learning IDL, increasing efficiency. The course is focused on using IDL for data exploration, visualization and analysis, with examples from astronomy, atmospheric science, remote sensing and medical imaging. This course is intended for new users of IDL; however, experienced users will also benefit from interacting with our veteran instructors. No knowledge of IDL is required.

Prerequisite: Basic operating knowledge of computers required; programming experience (in IDL or another language) helpful.

IDL System Basics
  • The IDL command line and workbench
  • Using projects
  • Setting and changing the working directory
  • The IDL Help system
Graphics Systems and Color
  • Graphics systems in IDL
  • Using Graphics: references, properties, and methods
  • The RGB color system
  • Specifying colors: directly and with color tables
Data Visualization
  • Line, surface and contour plots
  • Displaying and manipulating images
  • Combining visualization types
  • Using color
  • Text and line annotations
  • Output to PostScript, PDF, and standard image file formats
Data Structures
  • Variable types and type behavior
  • Arrays and array indexing
  • The WHERE function
  • Lists, hashes, and structure
  • Strings and string processing
  • System variables
  • Program types
  • Compiling, debugging, and running programs
  • The COMPILE_OPT statement
  • Using parameters: positional and keyword
  • Operators and control statements
  • IDLdoc documentation system
File Access
  • File handling routines
  • Reading/writing text/binary files
  • Working with supported standard formats
  • The SAVE file format
  • Overview of IDL’s standard libraries
  • IDL Math & Stats: the IMSL libraries
  • Examples of interpolation, curve fitting, signal processing, and image processing
Map Projections (optional)
  • Creating a projection
  • Warping data to a projection
  • Web sites: and independent users
  • The IDL user community
  • The comp.lang.idl-pvwave newsgroup
  • Books on IDL and programming

View our Classroom Training Calendar

Scientific Programming with IDL (IDL 200 - 3 Days )


IDL has long been used by scientists as an interactive tool for tackling research problems. Although it's easy to learn the basics of IDL, most scientists do so by trial and error under the pressure of completing a deliverable. Because of this, even long-time IDL users aren't always familiar with many of the features and programming aids built into IDL. Scientific Programming with IDL is a three-day course on programming with IDL. In the course, we focus on programming methods and best practices in IDL. We also explore techniques for data access, analysis, visualization and output that make IDL useful for scientists in research settings.

Prerequisite: Completion of Introduction to IDL or equivalent experience; many of the topics covered in this course won’t resonate with someone who hasn’t used IDL. This course is directed in particular at IDL users who want a refresher, or who want to see the “right way” to program in IDL.

The IDL Workbench
  • Overview of the Workbench layout
  • Using projects: organization, path management
  • Helpful features: keyboard shortcuts, code templates, Content Assist
  • The Workbench Code Profiler
  • Type hierarchy and promotion
  • Type behaviors: byte, integer and floating-point
  • Array ordering and indexing
  • Structures, lists and hashes
Programming Techniques
  • Structured modular programming
  • Main programs vs. procedures vs. functions: which to use?
  • Programming style conventions
  • The COMPILE_OPT statement
  • Parameter passing
  • Checking, testing and protecting parameters
  • Calling mechanism
  • Error handling
  • Using breakpoints
  • Keyword inheritance
  • Documenting code with IDLdoc
Code Performance
  • Vectorization
  • Order of operations
  • Row versus column array access
  • Loop ordering
  • Array creation and assignment
  • Variable type
  • Memory management techniques
Data Access
  • Reading text files with READ_ASCII, READF, READS and IDL astrolib routines
  • An introduction to scientific data formats: HDF4/5, HDF-EOS and netCDF
Data Visualization
  • Programmatic visualization and annotation
  • Displaying/positioning multiple plots per window
  • Embedded formatting commands: Greek characters, super/subscripts
  • Font systems
  • Adding plot legends and colorbars
  • Using LABEL_DATE for complex time axes
Map Projections
  • Creating a projection 
  • Displaying data on projection 
  • Reprojection
Vector and Raster Output
  • Output to PostScript (RGB and CMYK) and image file formats (JPEG, PNG, TIFF, GIF)
  • Headless plotting
  • Batch processing of graphics
  • Anti-aliased fonts in raster graphics
  • Making movies: AVI, Quicktime, animated GIF
  • Tips on making graphics for presentations and journal articles
  • Building shared objects in C or Fortran 
  • CALL_EXTERNAL syntax and examples
  • Web sites: and independent users
  • The Exelis VIS user community
  • The comp.lang.idl-pvwave newsgroup
  • Books on IDL and programming

View our Classroom Training Calendar

Customizing ENVI with IDL (ENVI 250 - 4 days )


Extending ENVI with IDL is a four day course for remote sensing scientists, engineers and developers who wish to incorporate their own algorithms and workflows into ENVI. This course provides an overview of the programming constructs available in IDL, the language in which ENVI is written, as well as the tools necessary for a user to extend ENVI with IDL, including ENVI library routines, custom file readers and writers, batch mode programs and user functions. Students should be familiar with ENVI, ideally having taken Exploring ENVI. Several ENVI programs are developed in class. Though it is helpful to have programming experience in IDL, familiarity with basic programming topics in any language is suitable.

Prerequisite: Exploring ENVI (or equivalent experience) and familiarity with basic programming.

IDL System Basics
  • The IDL Workbench
  • Statements and programs
  • Command-line versus programmatic use
  • The IDL Help System
A Tour of IDL
Data Structures
  • Variable type
  • Arrays and array operations
  • Dynamic typing and type behaviors
  • Structures
  • Objects
  • Lists & Hashes
  • System variables
Programming Syntax
  • Operators and control statements
  • The COMPILE_OPT statement
  • Program types
  • Using positional and keyword parameters
  • Parameter passing
  • Path
  • Calling mechanism
  • Debugging with the Workbench
  • Error handling
  • IDL batch scripting
  • Namespace
  • Comments
  • Documentation
File Routines
  • Routines for locating and accessing files
  • Reading text and binary files
  • Object-based file readers
  • Scientific data formats and high level file access


    Band and Spectral Math
  • Using IDL operators
  • Constructing expressions
ENVI Procedural Library Routines
  • Opening and managing files
  • Querying file metadata
  • Reading data from files
  • Writing ENVI-format files
  • Handling Vector data
ENVI’s Object API
  • Application control
  • Data input and output
  • Metadata access
  • Rasters, Layers, Views, and Portals
  • Tiling and tile based processing
ENVI Batch Programming
  • Running ENVI in headless mode
  • The ENVI_DOIT wrapper
  • Automating multiple processes
  • File and string processing to support batch processing
ENVI Extensions
  • Adding extensions to the toolbox
  • ENVI Extension basics
  • Using the ENVI Extension Wizard
  • Packaging and distributing extensions
ENVI GUI Programming
  • The ENVI widget toolkit
  • Using IDL widgets in ENVI programs
  • Getting access to the widget hierarchy of the main ENVI application
  • Web sites: and independent users
  • The Exelis VIS user community
  • The comp.lang.idl-pvwave newsgroup
  • Books on IDL and programming

View our Classroom Training Calendar

Application Development with IDL (IDL 300 - 3 days)


Scientists, engineers and developers can strengthen their skills in employing IDL as an application programming language, not just as a command-line tool. The major topics covered in this course include widget programming, data visualization with Object Graphics, object-oriented programming and external linking. These topics, though useful in their own right, are also used to demonstrate techniques for building effective, efficient IDL programs. Take this course and learn how to write better code that can be used by others.

Prerequisite: Experience with IDL and another programming language, or completion of Introduction to IDL or Scientific Programming with IDL.

The IDL Workbench
  • Eclipse terminology
  • Projects
  • Editor tools
  • Keyboard shortcuts and Content Assist
  • Breakpoints and Debug perspective
  • Configuring preferences
Fundamentals Review
  • Arrays
  • Structures, lists and hashes
  • •Pointers
  • Calling mechanism and path
  • The COMPILE_OPT statement
General Programming
  • Testing positional and keyword parameters
  • Keyword inheritance
  • Error handling with CATCH
  • Namespace
  • SAVE files and the IDL Virtual Machine
Widget Programming in IDL
  • Interface planning and design
  • IDL widget toolkit
  • Widget hierarchy
  • The IDL widget programming model
  • XMANAGER and event structures
  • Event handling schemes
  • State variable
  • Cleanup routine
  • Widget geometry
  • Draw widget interaction
  • Multiple top-level bases
The IDL Object Graphics System
  • Member classes
  • Object lifecycle
  • Object Graphics hierarchy
  • The Object Graphics programming model
  • Coordinate systems and coordinate transformations
  • XOBJVIEW helper tool
  • Interfacing widget events with object methods
  • Interactivity and resizing in widget programs
  • Using a Trackball object
Object-Oriented Programming in IDL
  • Overview of object-oriented programming
  • Defining classes in IDL
  • Inheritance
  • Creating, interacting with and destroying objects
  • Resource management
External Linking
  • Overview of external linking
  • Linking options in IDL
  • Using CALL_EXTERNAL, with examples
  • Web sites: and independent users
  • The Exelis VIS user community
  • The comp.lang.idl-pvwave newsgroup
  • Books on IDL and programming

View our Classroom Training Calendar


© 2017 Exelis Visual Information Solutions, Inc., a subsidiary of Harris Corporation