Announcements Design Jam schedule Project – Evaluation due Fri July 30 th 11:59pm Paper presentations Paper/System presentations. Takers? – Tue: Eisenberg.

Slides:



Advertisements
Similar presentations
Chapter 3: Modules, Hierarchy Charts, and Documentation
Advertisements

INTRODUCTION Chapter 1 1. Java CPSC 1100 University of Tennessee at Chattanooga 2  Difference between Visual Logic & Java  Lots  Visual Logic Flowcharts.
CS 111: Introduction to Programming Midterm Exam NAME _________________ UIN __________________ 10/30/08 1.Who is our hero? 2.Why is this person our hero?
CHAPTER 1: AN OVERVIEW OF COMPUTERS AND LOGIC. Objectives 2  Understand computer components and operations  Describe the steps involved in the programming.
Chapter 1 - An Introduction to Computers and Problem Solving
Tailoring Needs Chapter 3. Contents This presentation covers the following: – Design considerations for tailored data-entry screens – Design considerations.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 9 Duplication.
ISBN Chapter 3 Describing Syntax and Semantics.
Classes and Object- Oriented... tMyn1 Classes and Object-Oriented Programming The essence of object-oriented programming is that you write programs in.
Midterm Several high 90s Average: 91% = A-. Project – Evaluation Plan See doc Exercise: plan for your evaluation now in- class!
Ch 11 Cognitive Walkthroughs and Heuristic Evaluation Yonglei Tao School of Computing and Info Systems GVSU.
1 CS 106, Winter 2009 Class 4, Section 4 Slides by: Dr. Cynthia A. Brown, Instructor section 4: Dr. Herbert G. Mayer,
Programming Language Paradigms: summary. Object-oriented programming Objects are the fundamental building blocks of a program. Interaction is structured.
ITouch/iPhone SDK A study using Cognitive Dimensions.
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
Cognitive Dimensions T R G Green See rs/introCogDims/index.html
CS 330 Programming Languages 09 / 16 / 2008 Instructor: Michael Eckmann.
Data Abstraction and Object- Oriented Programming CS351 – Programming Paradigms.
Introduction to a Programming Environment
Describing Syntax and Semantics
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Meaningful Modeling: What’s the Semantics of “Semantics”? David Harel, Weizmann Institute of Science Bernhard Rumpe, Technische Universität Braunschweig.
Evaluation in HCI Angela Kessell Oct. 13, Evaluation Heuristic Evaluation Measuring API Usability Methodology Matters: Doing Research in the Behavioral.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Chapter 9 Introduction to ActionScript 3.0. Chapter 9 Lessons 1.Understand ActionScript Work with instances of movie clip symbols 3.Use code snippets.
Peter Andreae Computer Science Victoria University of Wellington Copyright: Peter Andreae, Victoria University of Wellington Java Programs COMP 102 #3.
Gary MarsdenSlide 1University of Cape Town Designing usable programming languages.
Design-Making Projects Work (Chapter7) n Large Projects u Design often distinct from analysis or coding u Project takes weeks, months or years to create.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming 1.
Functions Part I (Syntax). What is a function? A function is a set of statements which is split off into a separate entity that can be used like a “new.
1 Computing Software. Programming Style Programs that are not documented internally, while they may do what is requested, can be difficult to understand.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Week 4 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
Usability Evaluation/LP Usability: how to judge it.
Week 5 - Wednesday.  What did we talk about last time?  Exam 1!  And before that?  Review!  And before that?  if and switch statements.
SE: CHAPTER 7 Writing The Program
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
ISBN Chapter 3 Describing Semantics -Attribute Grammars -Dynamic Semantics.
CS 363 Comparative Programming Languages Semantics.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 10.
Modeling system requirements. Purpose of Models Models help an analyst clarify and refine a design. Models help simplify the complexity of information.
Usability 1 Usability evaluation Without users - analytical techniques With users - survey and observational techniques.
CMP 131 Introduction to Computer Programming Violetta Cavalli-Sforza Week 3, Lecture 1.
Task Analysis CSCI 4800/6800 Feb 27, Goals of task analysis Elicit descriptions of what people do Represent those descriptions Predict difficulties,
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
The Software Development Process
8-1 Compilers Compiler A program that translates a high-level language program into machine code High-level languages provide a richer set of instructions.
Cognitive Dimensions  Developed by Thomas Green, Univ. of Leeds  Used to analyze the usability of information artifacts  Applied to discover useful.
OVERVIEW Framework Overview – From Programming to Music Dimensions in Detail – Visibility, Progressive Evaluation, Consistency, Viscosity, Abstraction.
Computer Programming CONTENTS Introduction to Operating Systems Introduction to programming languages Introduction to perl programming language Programming.
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
 Introduction  Methodology  Case Study 1 : Event-B and RODN  Case Study 2 : B-Method and Atelier B  Observations and Analysis  Conclusion.
Examining issues with advanced authoring Chris Roast Andrew Dearden Babak Khazaei Sheffield Hallam University.
© Peter Andreae Java Programs COMP 102 # T1 Peter Andreae Computer Science Victoria University of Wellington.
Chapter 1: Preliminaries Lecture # 2. Chapter 1: Preliminaries Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation.
Software Design and Development Development Methodoligies Computing Science.
Cognitive Dimensions  Developed by Thomas Green and Alan Blackwell  Enhanced by Marian Petre Marian PetreMarian Petre  Descriptions of aspects, attributes,
Algorithms and Flowcharts
Introduction to Algorithms
Task Analysis CSCI 4800/6800 Feb 27, 2003.
Errors ECE 695 Alexander J. Quinn 3/9/2016.
Computer Programming.
Informatics 121 Software Design I
Programming Logic and Design Fourth Edition, Comprehensive
Introduction to Algorithms
Programming Languages, Preliminaries, History & Evolution
Software Development Techniques
Presentation transcript:

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” CHI.pdf – Tue: Daughtry et al.’s: “API usability: Report on Special Interest Group at CHI” _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

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: 1.if I fit two or three of these constructs together, does it get incomprehensible? 2.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? 1.the notation contains many internal dependencies 2.the medium or working environment constrains the order of doing things, and 3.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? 1.By use of meaningful identifiers 2.By well-structured modularity 3.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 ( 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.

Trade-offs among dimensions? E.g., heat up air to change temperature causes increase in its volume unless compressed, which in turn causes change in pressure.