Module 14

Human Computer Interaction / Usability

Outline Chapter 18

Chapter 18 Limitations of Computing

18.1 Hardware

Limits on Arithmetic

Limits on Components

Limits on Communications

18.2 Software

Complexity of Software

Current Approaches to Software Quality

Notorious Software Errors

18.3 Problems

Comparing Algorithms

Turing Machines

Halting Problem

Classification of Algorithms

Ethical Issues: Therac-25: Anatomy of a Disaster

Related FGCU Courses

http://icarus.fgcu.edu:8080/CourseDescriptions/

CEN 3073 Software Specifications

Covers the analysis of software requirements, and the study of requirements engineering tools and techniques. Includes requirements elicitation, gathering, formalizing, specification, and validation.

Lesson

Day One

      1. Get a script running ("Hello World")

Day Two

Caesar Cipher continued

  1. Get the ASCII code for one character (charCodeAt)

  2. Print a character from an ASCII code (String.fromCharCode)

  3. Get the ASCII code for one character, shift it (like + 3), and then print it, for example: A + 3 = D

  4. Get the ASCII code for each character in a 3 letter word, shift them, and print them (use +=)

  5. Get the ASCII code for each character in a 3 letter word, shift them, and print them using a loop that repeats a fixed number of times (use a for loop)

  6. Print the length of an assigned (non user input) string (use the String method)

  7. Get the ASCII code for each character in a word of any length, shift them, and print them using a loop that repeats based on the length

  8. Get the ASCII code for each character in a phrase of any length, shift the letters, do not shift the spaces, and print the characters using a loop that repeats based on the length (use if)

  9. Shift should always result in a letter, for example: Z + 3 = C

  10. Only shift letters, not special characters

  11. Get user input instead of using a set phrase

  12. Allow the shift amount to be set

Project Review

Classes

Project Preview

Human-Computer Interaction (HCI)

Human-computer interaction (HCI) is concerned with designing interactions between human activities and the computational systems that support them, and with constructing interfaces to afford those interactions. Interaction between users and computational artifacts occurs at an interface that includes both software and hardware. Thus interface design impacts the software life-cycle in that it should occur early; the design and implementation of core functionality can influence the user interface – for better or worse. Because it deals with people as well as computational systems, as a knowledge area HCI demands the consideration of cultural, social, organizational, cognitive and perceptual issues. Consequently it draws on a variety of disciplinary traditions, including psychology, ergonomics, computer science, graphic and product design, anthropology and engineering.

KA Topics:

  • Contexts for HCI (anything with a user interface, e.g., webpage, business applications, mobile applications, and games)

  • Processes for user-centered development, e.g., early focus on users, empirical testing, iterative design

  • Different measures for evaluation, e.g., utility, efficiency, learnability, user satisfaction

  • Usability heuristics and the principles of usability testing

  • Physical capabilities that inform interaction design, e.g., color perception, ergonomics

  • Cognitive models that inform interaction design, e.g., attention, perception and recognition, movement, and memory; gulfs of expectation and execution

  • Social models that inform interaction design, e.g., culture, communication, networks and organizations

  • Principles of good design and good designers; engineering tradeoffs

  • Accessibility, e.g., interfaces for differently-abled populations (e.g., blind, motion-impaired)

  • Interfaces for differently-aged population groups (e.g., children, 80+)

KA Learning Outcomes:

  1. Discuss why human-centered software development is important. [Familiarity]

  2. Summarize the basic precepts of psychological and social interaction. [Familiarity]

  3. Develop and use a conceptual vocabulary for analyzing human interaction with software: affordance, conceptual model, feedback, and so forth. [Usage]

  4. Define a user-centered design process that explicitly takes account of the fact that the user is not like the developer or their acquaintances. [Usage]

  5. Create and conduct a simple usability test for an existing software application. [Assessment]