Announcements
Sponsored Links
This presentation is the property of its rightful owner.
1 / 42

Announcements PowerPoint PPT Presentation


  • 50 Views
  • Uploaded on
  • Presentation posted in: General

Announcements. Design Jam schedule Project – Evaluation due Fri July 30 th 11:59pm Paper presentations Paper/System presentations. Takers? Tue: Eisenberg et al.’s “Apatite: A New Interface for Exploring APIs” www.cs.cmu.edu/~NatProg/papers/p1331-eisenberg-apatite-CHI.pdf

Download Presentation

Announcements

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Announcements

  • Design Jam schedule

  • Project – Evaluation due Fri July 30th 11:59pm

  • Paper presentations

  • Paper/System presentations. Takers?

    • Tue: Eisenberg et al.’s “Apatite: A New Interface for Exploring APIs”

      www.cs.cmu.edu/~NatProg/papers/p1331-eisenberg-apatite-CHI.pdf

    • Tue: Daughtry et al.’s: “API usability: Report on Special Interest Group at CHI”

      http://john.daughtryhome.com/publications/DAUGHTRY_FAROOQ_MYERS_STYLOS_SEN_2009.pdf


Supporting programmers: Cognitive Dimensions

CS352 Summer 2010


Cognitive Dimensions

  • Analytical technique to evaluates visual programming languages (VPLs)

  • VPLs

    • let users create programs by manipulating program elements graphically rather than by specifying them textually

  • Examples?


Alice


Simulink


Yahoo!Pipes

  • http://pipes.yahoo.com/pipes/


Dimensions Outline

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • Closeness of mapping: What ‘programming games’ need to be learned?

  • Consistency: When some of the language has been learnt, how much of the rest can be inferred?

  • Diffuseness: How many symbols or graphic entities are required to express a meaning?

  • Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Dimensions Outline

  • Hard mental operations: Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

  • Hidden dependencies: Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

  • Premature commitment: Do programmers have to make decisions before they have the information they need?

  • Progressive evaluation: Can a partially-complete program be executed to obtain feedback on “How am I doing”?


Dimensions Outline

  • Role-expressiveness: Can the reader see how each component of a program relates to the whole?

  • Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • Viscosity: How much effort is required to perform a single change?

  • Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


Dimensions Outline

Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • Closeness of mapping: What ‘programming games’ need to be learned?

  • Consistency: When some of the language has been learnt, how much of the rest can be inferred?

  • Diffuseness: How many symbols or graphic entities are required to express a meaning?

  • Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Abstraction Gradient

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • An abstraction is

    • a grouping of elements to be treated as one entity

  • Examples?

    • Functions, classes, types, control abstraction like loops, conditionals, …

  • Abstraction-hating (e.g., flowcharts)

    • Only contain decision boxes and action boxes; you can’t have other abstractions

  • Abstraction-tolerant (e.g., C)

    • Can be used exactly as they come, but also allowing new abstractions of several kinds to be created

  • Abstraction-hungry (e.g., SmallTalk, C#)

    • To start writing a program, you first modify the class hierarchy

    • Every program requires a new abstraction

    • The novice programmer cannot simply map problem entities onto domain entities.


Abstraction Gradient (cont’d)

  • Finding the right balance is not easy

  • Downsides of abstractions:

    • Hard for novices

    • Delayed gratification

  • Upsides:

    • Right abstractions increase comprehensiveness of a language

    • Closer map to the problem


Dimensions Outline

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

     Closeness of mapping: What ‘programming games’ need to be learned?

  • Consistency: When some of the language has been learnt, how much of the rest can be inferred?

  • Diffuseness: How many symbols or graphic entities are required to express a meaning?

  • Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Closeness of mapping

  • Mapping = mapping between a problem world and a program world

  • Close mapping is good


But how close?

  • An example

    • Java/C# (general purpose) vs. spreadsheet (domain specific – maps directly to the problem)


Dimensions Outline

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • Closeness of mapping: What ‘programming games’ need to be learned?

     Consistency: When some of the language has been learnt, how much of the rest can be inferred?

  • Diffuseness: How many symbols or graphic entities are required to express a meaning?

  • Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Consistency

  • Consistency = ?

  • = when a person knows some of the language structure, how much of the rest can be successfully guessed?


Dimensions Outline

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • Closeness of mapping: What ‘programming games’ need to be learned?

  • Consistency: When some of the language has been learnt, how much of the rest can be inferred?

     Diffuseness: How many symbols or graphic entities are required to express a meaning?

  • Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Diffuseness/Terseness

  • = How many symbols or graphic entities are required to express a meaning?

  • Esp. an issue w/ VPLs b’c of real estate

  • Too diffuse:

    • more material to be looked at  smaller the proportion can be held in working memory  greater the disruption

  • Too terse:

    • Different programs hardly differ visually  difficult to look and tell


Dimensions Outline

  • Abstraction Gradient: What are the minimum and maximum levels of abstraction? Can fragments be encapsulated?

  • Closeness of mapping: What ‘programming games’ need to be learned?

  • Consistency: When some of the language has been learnt, how much of the rest can be inferred?

  • Diffuseness: How many symbols or graphic entities are required to express a meaning?

  •  Error-proneness: Does the design of the notation induce ‘careless mistakes’?


Error-proneness

  • = Does the design of the notation induce ‘careless mistakes’?

  • Examples of preventing errors:

    • Type systems

    • Program won’t pass compiler if it uses uninitialized variables

    • Auto-complete instead of having to type every word


Dimensions Outline

 Hard mental operations: Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

  • Hidden dependencies: Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

  • Premature commitment: Do programmers have to make decisions before they have the information they need?

  • Progressive evaluation: Can a partially-complete program be executed to obtain feedback on “How am I doing”?


Hard mental operation

  •  Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

  • Consider the following sentence:

    Unless it is not the case that the lawn-mower is not in the shed, or if it is the case that the oil is not in the tool-box and the key is not on its hook, you will not need to cut the grass....


Hard mental operation (cont’d)

  • A broad-brush test for hard mental operaion is:

    • if I fit two or three of these constructs together, does it get incomprehensible?

    • is there a way in some other language of making it comprehensible? (Or is it just a really hard idea to grasp?)

      If the answer is Yes to both, then it counts.


Dimensions Outline

  • Hard mental operations: Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

     Hidden dependencies: Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

  • Premature commitment: Do programmers have to make decisions before they have the information they need?

  • Progressive evaluation: Can a partially-complete program be executed to obtain feedback on “How am I doing”?


Hidden dependencies

  • Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

  • Dependency

    • relationship between two or more things

  • Bad examples:

    • a function surreptitiously altered the value of a global variable

    • formula in a cell tells which other cells it takes its value from, but does not tell which other cells take their value from it

    • GOTOs (absence of come-from)


Dimensions Outline

  • Hard mental operations: Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

  • Hidden dependencies: Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

     Premature commitment: Do programmers have to make decisions before they have the information they need?

  • Progressive evaluation: Can a partially-complete program be executed to obtain feedback on “How am I doing”?


Premature commitment

  • Do programmers have to make decisions before they have the information they need?

  • An example:

    • Forced to choose what features to have when first installing a piece of software

  • When does this problem arise?

    • the notation contains many internal dependencies

    • the medium or working environment constrains the order of doing things, and

    • the order is inappropriate


Dimensions Outline

  • Hard mental operations: Are there places where the user needs to resort to fingers or pencilled annotation to keep track of what’s happening?

  • Hidden dependencies: Is every dependency overtly indicated in both directions? Is the indication perceptual or only symbolic?

  • Premature commitment: Do programmers have to make decisions before they have the information they need?

     Progressive evaluation: Can a partially-complete program be executed to obtain feedback on “How am I doing”?


Progressive evaluation

  • Can a partially-complete program be executed to obtain feedback on “How am I doing”?

  • Novices need to evaluate their own problem-solving progress at frequent intervals

  • Experts can usually live without it if they have to, but even they prefer to have it


Dimensions Outline

 Role-expressiveness: Can the reader see how each component of a program relates to the whole?

  • Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • Viscosity: How much effort is required to perform a single change?

  • Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


Role-expressiveness

  • Can the reader see how each component of a program relates to the whole?

  • RE describes how easy it is to answer the question ‘what is this bit for?’

  • How to enhance RE?

    • By use of meaningful identifiers

    • By well-structured modularity

    • By the use of secondary notation (doesn’t contribute to the running of the program, e.g., comments) to signal functionally-related groupings


Dimensions Outline

  • Role-expressiveness: Can the reader see how each component of a program relates to the whole?

     Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • Viscosity: How much effort is required to perform a single change?

  • Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


Secondary notation

  • Can programmers use layout, color, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • SN is carries extra information by other means than formal syntax


Find examples of secondary notations from this

  • Indenting

  • Commenting

  • choice of naming conventions

  • grouping of related statements


Dimensions Outline

  • Role-expressiveness: Can the reader see how each component of a program relates to the whole?

  • Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

     Viscosity: How much effort is required to perform a single change?

  • Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


Viscosity: resistance to local change

  • The ‘viscosity’ of a fluid is its resistance to local change.

  • V here means how much effort is required to perform a single change?

  • Why viscosity matter?

    • changes and revisions infest the whole course of programming activity, from specifying to designing to coding


Dimensions Outline

  • Role-expressiveness: Can the reader see how each component of a program relates to the whole?

  • Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • Viscosity: How much effort is required to perform a single change?

  • Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


An example of high viscosity


Dimensions Outline

  • Role-expressiveness: Can the reader see how each component of a program relates to the whole?

  • Secondary notation: Can programmers use layout, colour, or other cues to convey extra meaning, above and beyond the ‘official’ semantics of the language?

  • Viscosity: How much effort is required to perform a single change?

     Visibility: Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?


Visibility

  • Is every part of the code simultaneously visible (assuming a large enough display), or is it at least possible to juxtapose any two parts side-by-side at will? If the code is dispersed, is it at least possible to know in what order to read it?

  • Related to visibility is juxtaposability, the ability to see any two portions of the program on screen side-by-side at the same time.

  • A bad example:

    • Spreadsheets, with their two layers (data and formulae), have asymmetric visibility.


In-class activity

  • Pick three of dimensions and evaluate Yahoo!Pipes using them (http://pipes.yahoo.com/pipes/)

  • 10 minutes: register for a Yahoo! Account if you don’t have one, and play with a couple of pipes programs

  • 15 minutes: go through the interface and write down the problems you find for each dimension.


  • Login