SPUG: Registering for Conway $eminars

Tim Maher/CONSULTIX tim at consultix-inc.com
Sat Jun 3 15:55:15 CDT 2000


SPUGsters,

As most of you know by now, my company, Consultix, has arranged to
host Damian Conway's presentations of two full-day seminars during
the 7/6-7/7 period (on "Adv. OOP" and "Text Parsing").

It's important for me to have a reasonably accurate forecast
of the likely attendance, so we don't get caught short by late
registrants causing a conference-room overflow, or, even worse,
prematurely cancel a seminar whose potential registrants are just
procrastinating.

So I'd be grateful if those who think they might attend would please
drop me an Email letting me know, and I urge those serious about
attending to register soon, to ensure a place in class.

Brief summaries of these seminars follow below, and full details in
the attachments.

Thanks,
*========================================================================*
| Dr. Tim Maher, CEO, Consultix       (206) 781-UNIX/8649;  ask for FAX# | 
| Email: tim at consultix-inc.com        Web: http://www.consultix-inc.com  |
| CLASSES; 6/12-> Intermediate Perl  6/15-> Adv. Pattern Matching w/Perl |
| DAMIAN CONWAY Seminars;  Adv. OO Perl: 7/6,  Parsing with Modules: 7/7 |
*========================================================================*

    ADVANCED OBJECT-ORIENTED PERL, by Damian Conway
          July 6, 2000.  Kirkland, WA USA

DESCRIPTION:
   This seminar will show you how to build on the basic 
object-oriented Perl techniques you already know and unlock
more of the power of Perl's OO capabilities.

Topics include Pseudo-hashes, fields.pm, base.pm, data
hiding, Tie::SecureHash, inheritance, polymorphism,
operator overloading, automatic class creation,
design-by-contract programming, generic programming,
Class::Classless, and multiple dispatch.

Details attached, and also available at:
        http://www.consultix-inc.com/advoop.html

BEYOND REGEXES: TEXT PARSING WITH PERL MODULES, by D. Conway
           July 7, 2000.  Kirkland, WA USA

DESCRIPTION:
   This seminar will show you how to use a range of
standard Perl features and several CPAN modules (in
particular, Parse::RecDescent) to decipher and process
a variety of complex data and command formats. It's a
practical introduction to the techniques of grammar-based
recursive-descent parsing.  Examples include: converting
queries to regexes, parsing Apache error-log and
configuration files, filtering DNA sequences, and natural
language processing.

Details attached, and also available at:
        http://www.consultix-inc.com/parsing.html
-------------- next part --------------
                    ADVANCED OBJECT-ORIENTED PERL
                          Dr. Damian Conway
                    July 6, 2000, Kirkland, WA USA
        Web Version: http://www.consultix-inc.com/advoop.html
         Sponsored by CONSULTIX, http://www.consultix-inc.com
                                   
SPEAKER:
   Dr. Damian Conway
   School of Computer Science and Software Engineering,
   Monash University, Clayton, 3168 AUSTRALIA

TARGET AUDIENCE:
   Perl programmers who have either completed Tom Christiansen's 
   introductory object-oriented Perl tutorial, read and absorbed
   Chapters 1 through 3 of "Object Oriented Perl", taken the
   Consultix "Intermediate Perl Programming" class, or who
   have otherwise acquired a basic familiarity with simple OO Perl.

WHAT ATTENDEES WILL LEARN:
   This tutorial will show you how to build on the basic
   object-oriented Perl techniques you already know and unlock
   more of the power of Perl's OO capabilities.

   Attendees will learn:

   * how to use pseudo-hashes and the standard fields.pm
     and base.pm modules;

   * how (and when) to bless arrays and scalars;

   * three different ways to implement data hiding for
     Perl objects (including the Tie::SecureHash module);

   * how Perl implements inheritance and polymorphism
     (and how you can change the rules of either);

   * how to simulate scalars, arrays, hashes, and typeglobs
     using ties;

   * the features (and traps) of operator overloading in Perl;

   * two easy ways to build complete classes
     (semi-)automatically;

   * how to do design-by-contract programming in OO Perl
     (using the Class::Contract module);

   * two ways to do generic programming in Perl;

   * how to use the Class::Classless module to build OO
     programs without classes;

   * how to use multiple dispatch (polymorphism on steroids)
     to implement event-driven class hierarchies for simulation
     and GUI applications.

SEMINAR OUTLINE:
   * Review of Perl OO basics
      - packages, references, blessing
      - the three rules
      - Example: a dog-tag class
   * Non-hash-based objects
      - arrays as objects
      - scalars as objects
      - Examples: hash re-iterators; OO bitstrings
   * Pseudo-hashes
      - what they are, how to use them as objects
      - the fields.pm  module
      - compile-time type checking
   * Automating class construction
      - Class::Struct
      - Other class construction modules
      - Example: A CD library
   * Inheritance
      - revision of concepts
      - how they work in Perl
      - @ISA, isa(), can(), SUPER
      - Example: a restricted transceiver class
   * Polymorphism 
      - When and how to use it
      - Variations on the theme
      - Example: OO lexical analysis
      - Examples: a safer transceiver class
   * Encapsulation
      - the pros and cons of data hiding
      - encapsulation via closures
      - encapsulation via scalars
      - encapsulation via the Tie::SecureHash module
      - Example: the dog-tag class thrice revisited
   * Inheritance revisited
      - tricks with inherited constructors and destructors
      - abstract methods
      - attribute collisions
      - inheritance and pseudohashes: the base.pm module
   * Ties
      - simulating implementing scalars and hashes
      - scalar examples (a bounded scalar; proxies)
      - hash example (a multi-iterable hash)
   * Operator overloading
      - overview and limitations of mechanism
      - overloading operations, conversions, and constants
      - problems with references
      - Example: Klingon arithmetic
   * Grafting other OO models onto Perl
      - classless programming with Class::Classless 
      - design-by-contract with Class::Contract
      - Examples: Classless network control; Contractual threading
   * Generic programming
      - Why you don't need it in Perl
      - How to do it anyway 
      - Examples: generic lists; generic trees
   * Multiple dispatch
      - when regular polymorphism isn't enough
      - cascaded polymorphism
      - table driven dispatch
      - Class::Multimethods
      - Example: GUI event-loop programming

SPEAKER BIOGRAPHY:
   Damian Conway holds a Ph.D. in Computer Science and
   is a Senior Lecturer in Computer Science and Software
   Engineering at Monash University, Melbourne, Australia.
   
   He is the author of numerous well-known modules including:
   Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect,
   Class::Multimethods, and Coy (all available from your
   local CPAN mirror).
   
   Damian was the winner of both the 1998 and 1999 Larry
   Wall Awards for Practical Utility. He is a member of
   the technical committee for The Perl Conference 4.0, the
   convener of the annual Perl haiku contest, a columnist
   for The Perl Journal, and author of the book "Object
   Oriented Perl".
-------------- next part --------------
            BEYOND REGEXES: Text Parsing with Perl Modules
                          Dr. Damian Conway
                    July 7, 2000, Kirkland, WA USA
        Web Version: http://www.consultix-inc.com/parsing.html
         Sponsored by CONSULTIX, http://www.consultix-inc.com
                                   
SPEAKER:
   Dr. Damian Conway
   School of Computer Science and Software Engineering,
   Monash University, Clayton, 3168 AUSTRALIA

TARGET AUDIENCE:
   Perl programmers who are familiar with simple
   regular expressions and the use of modules. The
   techniques presented will be useful to anyone
   who needs to process structured text of any kind.  

WHAT ATTENDEES WILL LEARN:
   This seminar will show you how to use a range of
   standard Perl features and several CPAN modules (in
   particular, Parse::RecDescent) to decipher and process
   a variety of complex data and command formats. It's
   a practical introduction to the techniques of
   grammar-based recursive-descent parsing.

   You will learn:
   
   * how to design and build parsers to process
     Apache configuration files and log data;

   * how to process structured expressions
     (e.g. search engine queries);

   * how to balance nested brackets and match
     delimiters without a regular expression;
     
   * how to fold, spindle and mutilate the
     comments in a C program;

   * how to dissect C++ type declarations
     with a self-adapting parser;

   * how to allow embedded Perl code in your
     own data format or command language;

   * how to convert natural language queries
     into SQL;

   * how to design and build self-modifying
     parsers to process Apache configuration
     files and log data;

   * how to pull pesky unmatched <P> tags from
     HTML;

   * how to deal with ambiguous data by parsing
     it in multiple universes simultaneously;
     
   * how to get Parse::RecDescent to write most
     of your grammar for you;

   * how to parse modular text (e.g. with source
     with #includes in it);

   * how to pre-filter your source code by tricking
     Perl into (nearly) parsing Perl;

   * how to debug Parse::RecDescent parsers
     efficiently and how to improve the efficiency of
     your Parse::RecDescent grammars

   There'll even be some useful stuff, like how to write a
   program that does stand-up comedy.

   You'll also discover the psychedelic secrets of Randal's
   beatnik poetry generator, and learn how to earn thousands in
   your spare time by generating scholarly articles for modern
   Philosophy journals.

SEMINAR OUTLINE:
   * A brief history of parsing
      - grammars, rules, recursive descent, etc.
   * Implementing parsers
      - top-down vs bottom-up approaches
   * Useful tools
      - Text::Balanced, Parse::Yapp, perl-byacc,
        Parse::RecDescent
   * Simple parsing
      - Parsing delimited text, parsing Perl subsets
   * Parsing data
      - Parsing Apache log files
      - optional subrules, list parsing
      - run-time parser generation
   * Parsing input
      - The Text::Query modules
      - OO parsing
      - operator precedence, lists, look-ahead,
        rejections, etc.
   * Parsing code
      - parsing C and C++
      - stateful grammars
      - porting yacc grammars (including left-recursion)
      - self-extending parsers, committing rules,
        deferred actions
      - grammar precompilation
   * Parsing natural language
      - generating SQL queries for natural language input
      - synthetic stand-up via reciprocal parsers
   * Miscellaneous advanced features of Text::Balanced
      - precompiling delimiter extractions
      - extracting tagged text
      - extracting Perl variables
      - extracting mixed components
   * Miscellaneous extra features of Parse::RecDescent
      - Named items (the %item array)
      - Debugging grammars: <trace>, <warn>, <hint>, and
        <nocheck>
      - Context information: $thisline, $lastoffset,
        @itempos, etc.
      - Extreme prejudice: the <fail> directive
   * Non-deterministic parsing
      - tracking "goodness-of-match"
      - the <score> and <autoscore> directives
   * Pre-tokenization
      - the <token> directive
      - token-based parsing
   * Automatic grammar generation
      - autoactions
      - autostubbing
      - autotrees
      - the <perl_quotelike>, <perl_codeblock>, and
        <perl_variable> directives
   * Generic rules
      - the <matchrule> directive
      - subrule arguments: @arg and %arg
   * Handling distributed text
      - processing file inclusions recursively
      - processing file inclusions by input modification
      - other uses of input modification
   * Semi-grammatical parsing
      - when Parse::RecDescent is overkill and regexes
        don't appeal
      - CSV revisited, text interpolation, simple command
        interfaces
   * Self-modification
      - Run-time parser generation and self-extending parsers
        revisited
      - A self-modifying Apache config/log file parser
   * (Nearly) parsing Perl
      - parsing with Text::Balanced on Occam's Razor
      - source code filtering
   * Metagrammars
      - building a grammar for parsing grammars
      - beat poetry and postmodern literature

SPEAKER BIOGRAPHY:
   Damian Conway holds a Ph.D. in Computer Science
   and is a Senior Lecturer in Computer Science
   and Software Engineering at Monash University,
   Melbourne, Australia.

   He is the author of numerous well-known modules
   including: Parse::RecDescent, Text::Balanced,
   Lingua::EN::Inflect, Class::Multimethods, and Coy
   (all available from your local CPAN mirror).

   Damian was the winner of both the 1998 and 1999
   Larry Wall Awards for Practical Utility. He is
   a member of the technical committee for The Perl
   Conference 4.0, the convener of the annual Perl
   haiku contest, a columnist for The Perl Journal,
   and author of the book "Object Oriented Perl".


More information about the spug-list mailing list