PPIG Annual Conference in York ........ ROLL UP! ROLL UP!

2011-08-12 Thread Thomas Green

Hi everyone

Are you coming to PPIG? We sure hope so because we've got a nice  
program set up with some extremely interesting papers, plus:


  -  a panel from industry-savvy experts on how cognitive factors  
turn up in unlikely-seeming places;


  - an invited paper by Gerrit van der Veer, one of the first authors  
to write about cognitive psychology of programming, since when he has  
chaired every important HCI conference you can think of;


 -  and a presentation by Gordon Fletcher, anthropologist turned CS/ 
IT expert, on research methods using qualitative data.


Not to mention York, a much-admired city, with a guided walk (weather  
permitting) and formal dinner in Meltons Too, an excellent restaurant  
in an old building accompanied by period live music.  On the night  
before we've arranged a pub evening, and for those who wish to arrive  
on the evening of the 5th (e.g. to take part in the doctoral  
consortium, or just to hang out) there's casual grub and drinks at my  
house.


If you are coming, please would you speedily register for the meeting?  
I know it's a little while away, but the university likes to get its  
room registrations in early. Help calm their restive minds - register  
NOW.


website: http://www.cs.york.ac.uk/ppig2011/

NB I'm away next week: queries to Alistair Edwards, please, the co- 
chair.


(Please forward)

Thomas Green
co-chair

Visiting Professor
University of Leeds, University of York




--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).


PPIG 2011

2011-06-10 Thread Thomas Green

The dates for submitting papers to PPIG 2011 are approaching!

Submission templates are now on the website, which is here: 
http://www.cs.york.ac.uk/ppig2011/

Regrettably the template for LaTex still makes you use the horrible  
numbered format, so that readers have to keep skipping to the back to  
find out who [1] is.  Is there anyone out there who is competent to  
change it to the Name (year) format, AND who has time and inclination  
to do so? if so, I'd be very grateful if you could send me an improved  
version.


Let me know if the templates give you any hassle.

Registration details shouldn't be long now. Come and see the City of  
York.


Thomas Green




Visiting Professor
University of York



--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).


Re: Magic features of programming languages

2011-05-21 Thread Thomas Green


Kevlin Henney wrote:
To really demonstrate autoboxing you need to allow the compiler to  
convert from int to Integer:

   Integer x = 1000;
   Integer y = 1000;
However, if you are after interesting counterintuitive corner cases,  
change the constant to 100:

   Integer x = 100;
   Integer y = 100;
A direct equality comparison will now compare true because, by  
default, the JVM caches the Integer objects for values from -128 to  
+127 (the range can be extended as an optimisation).

In other words, your corner case has a corner case. Magic.



Back in the sixties, the autocode for the Atlas machine at Harwell had  
a fine piece of magic. As an outsider, I could book for an occasional  
week there, and while I was there I could run programs twice a day  
iirc. I once spent two of those 7 days trying to find out why my  
program wouldn't work, panicking desperately about meeting my target,  
before discovering that of its 128 registers (called B-lines), the one  
I had chosen to use was fitted with a hardware conversion to return  
log-2 of any quantity stored in it.


All the higher-numbered B-lines silently did special things,  
apparently. Great if you knew about them. Tough otherwise.


(For those of you who came late to the party and missed the early  
days, an 'autocode' was a slightly-Englished version of machine code.  
Bit like a penny-farthing - if you stayed on, people admired you, but  
when you fell off it really showed.)


Thomas


--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).



Re: URGENT: Testing Inclination to Programming

2011-03-19 Thread Thomas Green


On 19 Mar 2011, at 09:55, Stefano Federici wrote:

what I claim is the easiest programming environment ever designed so  
far).



Er, yes. You might need to restrict what you mean by  
'programming' . I regard using spreadsheets as programming. But  
Scratch is very good at its job, to be sure.


I take it then that you're trying to out-do Scratch.


Does this sound reasonable?


Yes, it's probably the best you can do. I think the worst threat to  
generalisability is probably the risk of 'experimenter effect', where  
the students do better in the group that you want to do better. I  
don't know how to minimise that risk. If Sally Fincher or Mark Guzdial  
is listening, or anyone else with a good knowledge of these issues, I  
hope they'll join in.


Good luck! Make sure to tell us how it goes.

Thomas




73 Huntington Rd, York YO31 8RL
01904-673675
http://homepage.ntlworld.com/greenery/




--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).



Re: Redefining the word language

2011-03-04 Thread Thomas Green
And where do people want to put Inform 7, the interactive fiction  
language that is a subset of English and has some semantic inference  
built in?


http://inform7.com/

Is it a programming language? a restricted natural language? both?  
neither?


Thomas

On 4 Mar 2011, at 17:17, Kari Laitinen wrote:



 The definition of 'language' depends on who you are talking to.

I think that based on this discussion and earlier
discussions, it is not always clear what the term
programming language means. From the compilation
point of view the term is clear, i.e., the lexical
rules and the syntax of the language specify
accurately what the language is.
Kernighan and Ritchie used the term in that sense
in their famous book, thus excluding printf from the language.

From a human point of view, the term is less clear.
A computer program usually contains names (identifiers) that
must be understood by a person who wants to know how
that particular program works. If a program contains
definitions such as

  int nwhite, nother;
  int ndigit[10];

can we say that the names nwhite, nother, and ndigit,
belong to the used programming language?

 If the answer is 'yes', all lexically correct names
 belong to the programming language, resulting in that
 the programming language is a huge set of symbols.

 If the answer is 'no', one might ask that into which
 language these names belong if they do not belong
 to the used programming language. They are not
 English words, if English words are those that can
 be found in an English dictionary.

As both of these answers are somehow 'not good', I ended
up proposing the idea that each computer program or any
other document could be seen as containing its own
language. Thus the above names would belong to the
language of the program in which they were used.

A name such as 'nwhite' can mean different things
in different programs. In the program from which I
copied it it was used to count white space characters.
In a chess-playing application it might be used to
count white chess pieces. A symbol can have a
different meaning depending on in which language it
is used.

In the paper
http://www.naturalprogramming.com/to_read/estimating_understandability_etc.pdf
I have shown that these 'new' languages can be used
to compare different naming styles in computer programs, and
to show how computer programs relate to other
software documents.

Writing computer programs is a creative activity.
If a computer program is considered to contain
its own language, part of the programming project
is then to create the language that is used in
the program.



--
The Open University is incorporated by Royal Charter (RC 000391), an  
exempt charity in England  Wales and a charity registered in  
Scotland (SC 038302).




73 Huntington Rd, York YO31 8RL
01904-673675
http://homepage.ntlworld.com/greenery/





Re: evalutation of new tools to teach computer programming

2011-03-01 Thread Thomas Green
Depending on your aims, you might want to measure transfer to other  
problems: that is,  do participants who used tool A for the sorting  
task, then do better when tackling  a new problem, possibly with a  
different tool, than participants who used tool B?


You might also want to look at memory and savings: how do the  
participants manage two months later? Occasionally cognitive tasks  
like yours show no effect at the time but produce measurable  
differences when the same people do the same tasks later.


Pretty hard to create a truly fair test, but things to think about are  
controlling for practice and order effects, which should be easy, and  
controlling for experimenter expectation effects. The hardest thing to  
balance for is sometimes the training period: people using a new tool  
have to learn about it, and that gives them practice effects that the  
controls might not get. Sometimes people create a dummy task for the  
control condition to avoid that problem; or you can compare different  
versions of the tools, with differing features.


I suggest you try to avoid the simple A vs B design and instead look  
for a design when you can predict a trend: find A, B, C such that your  
theory says A  B  C. The statistical power is much better.


Don't forget to talk to the people afterwards and get their opinions.  
Sometimes you can find they weren't playing the same game that you were.


Good luck

Thomas Green



On 1 Mar 2011, at 11:20, Stefano Federici wrote:


Dear Collegues,
I need to plan an evaluation of the improvements brought by the  
usage of specific software tools when learning the basic concepts of  
computer programming (sequence, loop, variables, arrays, etc) and  
the specific topic of sorting algorithms.


Which are the best practises for the necessary steps? I guess the  
steps should be: selection of test group, test of initial skills,  
partition of the test group in smaller homogenous groups, delivery  
of learning materials by or by not making use of the tools, test of  
final skills, comparative analysis.


What am I supposed to do to perform a fair test?

Any help or reference is welcome.

Best Regards

Stefano Federici
-
Professor of Computer Science
University of Cagliari
Dept. of Education and Philosophy
Via Is Mirrionis 1, 09123 Cagliari, Italy
-
Tel: +39 349 818 1955 Fax: +39 070 675 7113


--
The Open University is incorporated by Royal Charter (RC 000391), an  
exempt charity in England  Wales and a charity registered in  
Scotland (SC 038302).




73 Huntington Rd, York YO31 8RL
01904-673675
http://homepage.ntlworld.com/greenery/





Re: evalutation of new tools to teach computer programming

2011-03-01 Thread Thomas Green


On 1 Mar 2011, at 14:29, Stefano Federici wrote:


Do you have any references to similar evalutations?



Now that Alan and Chuck have made the text of 'Psychology if  
Programming' available again, you might start there. Also look for  
work by Jorma Sajaniemi in Finland, and for lots of work by Margaret  
Burnett and her students in USA.


@John Daughtry:


 Rather than
asking which tool is best, you may be better served by seeking to
empirically describe and explain the underlying trade-offs


As an experimentalist, I'd see that as the goal of a _program_ of  
research. Any one study is usually about individual effects.


I agree, though. It's certainly much much better to understand _why_  
effects are happening, than to get one result and say That's That; and  
if John's subtext is that some studies in the literature are indeed  
rather shallow, I have to agree.


Er, a spot of self-promotion here .  the various types of  
comparison I did in the past led to a framework which attempts to make  
some sense of the underlying trade-offs, the cognitive dimensions  
framework, developed by me and lots of other people.  Stefano, if you  
simply want to know whether your new tool works, then you probably  
just need to do an experiment and stop; but if you want to know why it  
works (or doesn't), you might take a look at that framework. There's a  
resources page here:  http://www.cl.cam.ac.uk/~afb21/CognitiveDimensions/


CDs analysis is quite quick, though very vague. It's actually quite  
possible that it would reveal problems you've overlooked .



Thomas






--
The Open University is incorporated by Royal Charter (RC 000391), an exempt charity 
in England  Wales and a charity registered in Scotland (SC 038302).


Re: How to do a small readability experiment?

2010-07-16 Thread Thomas Green

Hi Richard

Here are some detailed remarks about technique that you just might  
find useful. If it's grandmother and egg time, please accept my  
apologies.



1) Given your hypothesis, I don't think you need to use huge programs.  
If you get a significant result from something N lines long, you can  
expect a larger effect from something 10N lines long, unless there's  
something unusual happening.



2)  There's a difference between reading for detail or verbatim recall  
versus reading for gist, well documented in the psycholinguistics  
literature. Françoise Détienne showed that the difference also applies  
in program comprehension, but I forget the details of her studies. You  
might want to use more than one measure, one for gist (like telling a  
story about the program) and one for detailed comprehension. Judith  
Good has done excellent work on telling stories about programs. My own  
work has mainly been on reading for detail.



3) If you want to look at detail, rather than gist, you're probably  
going to be looking at times or errors as the outcome measure. Time  
scores are quite nice to use, because they're much finer grain than  
number of errors. But it's essential that the participants know  
whether you want them to be incredibly accurate or incredibly fast -  
there's a trade-off - one option is present them a scenario, such as  
safety-critical software, and explain that you want them to be  
accurate even at the cost of slow performance. Or the other way round,  
if preferred.



Using reading for gist, e.g. telling stores about the program, will  
require more work from the experimenter in assessing each reply.



4) When reading for detail, there's a difference between reasoning  
'upstream' and reasoning 'downstream'. For an ordinary imperative  
structure, 'downstream' means in the direction of program flow, which  
is the easy way to reason.  I did a study on answering questions about  
conditional structures, with professional programmers, using varieties  
of syntax for the conditional structure. Given something like


if P then

if Q then A

else B

else if R then ...

etc, the downstream direction is : Given the truth-values for P, Q,  
R ..., what does this program do?  The upstream direction is: The  
program did action B, what must have been the truth-values?



What I found was very little difference (using time-to-answer) for the  
downstream direction, but large and very significant differences for  
upstream.



I suggest therefore that you try to include both directions in your  
tests.



5) A technique you might consider for detail comprehension is a  
version of the cloze procedure (fill in the blank). I did an  
unpublished study using forced-choice from about 4 alternatives. Iirc  
the participants were told what the program was intended to do, and  
had to find one of the alternatives that gave the correct result - so  
for instance, if the program was to find the mean of N numbers, you  
could have a blank in the summation, and offer different operators; or  
you have a blank in the divisor, and offer N, or N+1, or something  
else. (My test programs were a good deal larger, of course.) You have  
to be careful that the answer can't be found on purely syntactic  
reasoning. This might be quite an attractive method for you, assuming  
you want to use something like time scores, because correct reasoning  
could be quite complex and therefore even small differences in  
readability might show up.



5) If you use time scores, you'll probably get skewed distributions  
(but not nearly as skewed as error scores usually seem to be, at least  
in my studies). Anova is said to be reasonably robust for small  
amounts of skew, as long as it's always in the same direction, but a  
technique I have frequently used is to supplement anova on the raw  
scores with anova on transformed scores - if the skew is positive  
(usual case), you can use a log transform, for example. If you get the  
same pattern of significances, you're home and dry. If you don't, er,  
it depends.



6) There are alternatives to complete Latin squares. Incomplete  
squares confound the controlled variables; if you can accept the  
confounding, you can save experimental effort. You'd need to look at a  
book on experimental design for more info.



7) Don't forget to talk to the participants afterwards and ask what  
they thought, how they did the tasks, and so on. You may find some  
surprises - I certainly have done.



Can't think of anything else just now but open to questions. Good luck  
and make sure the results are made public!



Thomas Green


On 16 Jul 2010, at 07:42, Richard O'Keefe wrote:



On Jul 16, 2010, at 2:20 AM, Alan Blackwell wrote:


Hi Richard,

A couple of clarifications - your primary experimental
manipulation is 'style', is that right? Could you explain what
this means?


I thought I already said explicitly