APL Course Outlines
APL Borealis courses are generally structured as 2 or 3-day
hands-on training sessions, with emphasis on student problem-solving exercises
and interactive learning. Hands-on courses require each student to
have access to a PC or mainframe terminal, with any APL interpreter
software loaded. Courses may be delivered on-site or at other
facilities by prior arrangement.
The following course outlines provide a common list of topics
covered at each level. Courses may be customized to any extent to
suit the requirements and experience of students. In all courses, there is a
strong emphasis on good APL coding techniques, focusing on the key aspects
needed to design efficient and maintainable APL systems.
Delivery of these courses can be arranged at your facility or at
a downtown Toronto location. The suggested format is typically a two or
three-day, hands-on course in small groups, including exercises and
plenty of opportunity for skills development and feedback.
For beginners, includes APL basics, the APL environment, APL keyboard and session manager; introduction to language primitives; workspace management and user-defined functions; working with character and numeric arrays; quad-functions; searching, sorting, and generating numbers.
APL Programming Techniques
Formatting and report-creation; more primitives; operators; file systems (component and native); idioms, utilities; enclosed arrays; code management; performance issues; event handling and debugging.
Advanced APL & System Design
Focuses on the key aspects of efficient design, performance and maintainability in large APL systems; transaction processing; code management; programming standards; readability and maintainability of APL code; event handling; debugging; performance monitoring and improvement.
APL, Excel & ADO
An in-depth look at data transfer mechanisms between APL and Excel and ADO using COM/OLE/ActiveX techniques, including an introduction to VBA programming for APL/Excel systems. Use APL as client or server in your applications.
Windows/GUI Design in APL
Introduction to creating GUIs; graphics in APL; using other Windows features including OLE/ActiveX, ADO (Active Data Objects), etc.; migration from DOS to Windows; interfacing with non-APL systems.
Special Topics in APL
Including Microsoft .NET APL programming; APL and SQL Database techniques; Web Services and APL; hybrid systems with APL as Client or Server; and more.
This course is suitable for absolute beginners, as well as those who have had a minor exposure to the language but no formal training.
Table of Contents
The APL Environment, What is APL?
The APL Interpreter
APL Data Structures
The Session Manager and APL Keyboard
APL Objects: Variables
APL Objects: Functions
Other Objects: Operators, Namespaces
The APL Workspace: Active vs. Stored
Function Valence, Syntax and Domain
Lists of Numbers
The Concept of Rank
Monadic vs. Dyadic
APL Relational Functions
Reductions on Arrays
Reduction on Matrices, N-wise Reduction
The "del" Editor
The APL Function, Function Valence
Scalar Extension and Catenate
IO - Index Origin
Character Data in APL
Selecting Data from Vectors
Select by Position
Select by How Many
Select by Specified Criteria
Compress on Arrays
Expand on Arrays
Take/Drop on Arrays
Three uses of /
Changing Parts of Data Arrays
Sorting Numeric and Character Arrays
Searching Within Data Objects
Important Functions, Operators and Techniques
Other Primitives and Features
Catenate (along first axis)
APL Data Types
Object Size and Datatype
Selected APL Idioms
APL Programming Techniques - (Intermediate APL)
Suitable for students who have covered most topics at the Introductory level and have had some practice with APL coding. Emphasis is placed to ensure a complete understanding of APL fundamentals before moving on to more advanced topics. Includes an introduction to advanced topics like performance, file design, maintenance, utilities.
Table of Contents
Primitive Format, FMT
Other Primitives and Features
Catenate (along first axis)
Base / Represent
Index, Index with Axis
Factorial / Binomial !
Matrix Inverse / Matrix Divide
Enclosed Arrays / Nested Arrays
Extensions to Existing Primitives
Enclose with Axis
Partitioning / Partitioned Enclose
Indexed Assignment, Scalar Extension
When to Use Simple vs. Enclosed?
Argument and Result Passing
Workspace Items and Tables Management
Formatting Enclosed Arrays
Enclosed Arrays - Summary
Comparison of APL Files and Workspaces
Using APL Files
APL Component File Structure
File Functions - Summary
File Functions - Usage Notes
Named Component Files
Interfacing to Non-APL Systems
Execution of APL Code - Event Handling
The Execution Stack
Event Handling, Error Trapping - in General
Cutting Back the Stack
Stop and Trace
Specific APL Product Event Handling
Operators for Debugging
Performance and Efficiency
The APL Interpreter and APL Workspace
Diagnosing Performance Problems
Workspace "Caching" / Parallel Processing
Files and Workspace Performance
Managing Objects in the Workspace / Managing Workspaces
Code Control / Version Control
Code Management - Code File Systems
Table-Driven APL Systems - The Data Dictionary Approach
APL Programming Standards and Maintainability
Peer Review of APL Code
APL Product Utility Workspaces
Advanced APL and System Design
This three-day course will focus on the design of efficient and maintainable APL systems, with emphasis on methods for providing structure to systems built in APL.
The prerequisite for this course is a good working knowledge of APL features. The minimum should be an Introduction to APL course, plus at least 6 months hands-on experience with APL. Familiarity with enclosed arrays, packages, event handling, and APL files is required.
The course will be as generic as possible in terms of the brand of APL or computing platform used, with a discussion of features specific to certain APL products or platforms where necessary. Examples and exercises may be used to aid the learning process where time permits.
APL Fundamentals for Efficient and Maintainable APL Systems
- The APL environment, hardware and operating system limitations, startup parameters
- APL dataypes, impact on workspace and file storage
- performance and APL, using efficient data structures
- performance and file operations
- enclosed (nested) arrays, when to use or not use these, efficiency issues
- performance monitoring
- code efficiency, array-oriented thinking vs. looping
- workspace size and object size, discussion on blocking, looping, transaction processing
- time-saving and performance-enhancing APL language features not commonly used
APL Code Maintenance Techniques
- APL programming standards, maintainability issues, code readability
- peer review of APL code
- editing APL code, editor features
- management of workspaces
- managing objects in the workspace
- code storage, file vs. workspace
- code management strategies, paging systems, version control
- table-driven APL systems, the data dictionary approach
Productive APL System Development
- event handling, error trapping, use and abuse
- debugging APL systems, stop and trace techniques
- APL idioms
- utility functions, utility libraries
- code comparison and cross-reference tools
- APL code portability issues
- migration to other APL systems
- interfacing to non-APL systems
APL, Excel & ADO
Workshop attendees may use and install APL+Win or Dyalog APL on the classroom PC, and the workshop will provide usage details for these techniques for both products.
1) Introduction and Terminology
- terminology - OLE, COM, ActiveX, Object Oriented, client/server, etc. - we'll explore these terms and sort out the jargon
- today's APL - an overview of key features offered by APL products for these techniques
2) Excel Components
- an overview of the Excel spreadsheet object, its properties and methods and the Windows/GUI object-oriented paradigm; the Excel Help facility
- APL's view of Excel - what the Excel spreadsheet object and its properties look like from within APL; objects and functionality for driving Excel
3) APL in Command - reading/writing Excel data from the APL environment
- environment - the APL programming environment; data-type considerations; array-oriented logic
- reading - bringing data from Excel into the APL environment
- writing - populating Excel spreadsheets with APL data
- tools - typical examples and readily-available utilities for constructing systems
4) Excel and Visual Basic - key components and techniques
- Excel/VB - an introduction to Visual Basic within Excel; the Excel/VB user interface and programming environment for code and GUI development
- Excel/VB macros - common tools and techniques for creating, running, and debugging macros
- GUI controls - designing the Excel-driven interface using common GUI controls and techniques
5) Excel in Command - the APL calculation engine
- the APL object - creating the APL.dll; calling APL functions from Excel
- APL workspace objects - special-case objects; enclosed arrays; function argument/result passing
- communication - error handling and APL to Excel messaging
7) Fine Tuning - polishing the application for performance and functionality
- Excel/VB tips and techniques - better programming techniques; array handling, etc.
- APL tips and techniques - better programming techniques; array handling, etc.
- avoidance techniques - common pitfalls and how to avoid them
8) ADO - Active Data Objects & APL
- parallels between ADO and Excel from the APL perspective
- moving data back and forth from APL to ADO databases
- exercises and examples
Windows / GUI Design in APL
APL Does Windows! - Courses for Developing Windows Applications
APL programmers can now develop fully compliant Windows applications with relative ease, or convert existing applications to today's standards, and still take advantage of APL's enhanced development environment and powerful language features.
APL products offer built-in language enhancements to create object-oriented Windows GUIs, interact with other Windows-compliant applications, run OCX applets, offer ActiveX Data Object or ODBC client or server functionality, TCP/IP network support, and much more.
Developers who are already using APL in current software applications can now readily extend their capabilities to these new technologies. APL Borealis training courses are designed to pick up where your current APL development skills leave off. As you would expect, creating Windows applications in APL is remarkably easy, given the user-friendly programming environment and rich functionality that the APL language is known for.
These are the key topics which programmers will need to develop fully featured Windows applications in APL.
Table of Contents
GUI Options (past and present)
Typical Processing Steps
Objects - examples and comparison
What Invokes Action?
Specific APL Products - Objects
Window GUI Programming - in Detail
Building and Running an APL GUI Program
APL GUI System Functions and Variables Summary
APL GUI Utilities
Windows Utility Workspaces
Windows Demonstration Workspaces
Interactive Form Editors
The Windows Clipboard
Online Help Topics
Editing GUI objects "on the fly"
OLE/COM/ActiveX and Excel
Various User Downloads
ADO and APL
Special Events and Workshops
Fully-customized APL courses can be tailored to suit your requirements. Please call for details.
APL Borealis offers advanced workshops on specific APL topics from time to time. Below are some of our recent events in this category. Please contact us if you wish to be on the list for upcoming announcements for these events.
Richard Procter has been a specialist in APL software development
since 1979, and has developed and delivered courses on APL for dozens
of clients since 1992. His expertise includes the mainframe and PC
environments and products including Sharp APL, Dyalog APL/W, and
Richard was Chair of the Toronto APL Special Interest Group, a
chapter of the ACM/SIGAPL, from 1996 to 1998, and continues to
participate in that group's activities. Also, he chaired the very
successful annual APL conference, APL97, which brought to Toronto
some 250 APL users for a highly educational series of tutorials and
hands-on workshops on Array Programming Languages in 1997.
For more information, please contact:
APL Borealis Inc.