Monday, August 30, 2010

Why Is the Web Page Taking So Long?

Someday this blog will be linked in with the webpage so you can actually find it and read it.  So, why is it taking so long to get the website up?  At this point, I'm back at work regularly, but I'd like to have drafts of the assignments and many exam questions written before I create the website. 

Why? 

I hope we're all in this course to learn.  I certainly am!  However, grades can sometimes make a habit of getting in the way of learning.  Therefore, I'd like to at least prototype the assignments and exam questions before committing to the course's other parameters so that I can ensure that the graded assessments feed into our learning. 

Once I have them prototyped, I intend (among other things) to pre-post sample exam questions specifically designed to prepare you effectively for the real exams.  I'd like the specific questions on an exam to be a surprise—so you show that you can reason with the concepts we learn in a novel situation. However, I'd like the type of question you face to mostly be familiar—so you spend little or no time agonizing about what the question is actually asking you to do.

Hopefully, I'll finish all that in the next few days and have the course website up before the start of the term, at least!

Cheers,

Steve

Thursday, August 26, 2010

View from the Other Side: Larry Wall and Perl

In CPSC 311 this term, we'll be exploring design axes of programming languages.  This is an incredibly powerful way to view languages, but it is not the One True Way.

So, when you feel like some counterculture, try Larry Wall, Perl's designer.  Rather than categorizing languages by their design choices around functions, scope, continuations, evaluation, state, and so forth.  He scatters them by their "whipuptitude" and "manipulexity".  (But, do note that in that presentation, he does mention lexical (static) scoping!)

Cheers,

Steve

OOPLAI: OOP Intro in the Style of PLAI

In recent terms, we haven't discussed OOP in CPSC 311.  It's not clear whether we'll be doing it this term.  If you'd like to explore the underlying concepts of OOP in the PLAI style, Eric Tanter has posted a PLAI-style intro to OOP.

By the end of the term, you should have seen all the concepts you need to work through Tanter's chapter except possibly macros.  Happily, with respect to macro definitions, Tanter's work hews to the classic axiom from Mathematical Writing by Knuth, Larrabee, and Roberts:
Many readers will skim over formulas on their fi rst reading of your exposition. Therefore, your sentences should flow smoothly when all but the simplest formulas are replaced by "blah" or some other grunting noise.
Cheers,

Steve

P.S. OK, maybe this was in part just an excuse to share that lovely quote from Knuth et al.

Wednesday, August 18, 2010

Little Languages Review

It's surprising to think that Jon Bentley published this paper in 1986.  It feels current to me today and, as I think back over my education and career, current for each stage of my discovery of computer science.

On my first read, I take three main sets of lessons away.

Little Languages
 
First are Bentley's explicit lessons about little languages.

Bentley motivates little languages from several perspectives:
  1. A powerful way to accomplish specific tasks (like drawing pictures) that you need to accomplish, if someone else has done the work for you.  I need to do a better job of taking advantage of such things!  (Up front, mostly p711-713.)
  2. A framework for describing data for use in your own systems, including quite varied purposes for the data, which is powerful yet accessible to your users.  (Point mostly made in the sidebar, p714-715.)
  3. A technique to create abstraction layer boundaries in multi-layer systems (including compilers).  (p716-719)
Each of these is a profound example of the impact of languages on our tasks as programmers and users of computers.

Powerful Programmers