UI vs. UX

The user interface (UI) vs the user’s experience (UX) is a very modern “debate” in Computer Science. ux1This can also be summarized as the tension between usability and composability, between software that is user-friendly and software that is programmer-friendly (see this talk by Conal Elliott from Google). Consumers like software that’s easy to use. But programmers like software that’s easy to compose, i.e. to combine in unanticipated ways. Users want applications; programmers want libraries. Users like GUIs; programmers like APIs. It’s not immediately obvious that usability and composability are in tension. Why can’t you make users and programmers happy? You may be able to make some initial improvements that please both communities, but at some point their interests diverge. Looking at it another way, we can look at “operation versus expression” to express the same idea of usability versus composability (see this article by Vivek Haldar). Combining these ideas, we have these contrasts.

 Usability  Composability
 Operation  Expression
 Visual / GUI  Syntactic / CLI
 Bounded  Unbounded
 Externalize knowledge  Internalize knowledge

Neither column is necessarily better. Sometimes you want to be in the left column, sometimes in the right. Sometimes you want a stereo and sometimes you want a guitar.

8c966475d3fe42e75bb18f91b2e0f58d

When I file my taxes, I want the software to be as easy to use as possible right now. There’s no long-term use to consider since I’m not going to use it again for a year, so I’ll have forgotten anything peculiar about the software by the time I open it again. But when I’m writing software, I have a different set of values. I don’t mind internalizing some knowledge of how my tools work in exchange for long-term ease of use. Read the original article here

Advertisements

Making ideas into reality at MIT’s ‘Future Factory’

Back in the 1980’s a laboratory of misfits foresaw our future. Touch screens, automated driving instructions, wearable technology and electronic ink were all developed at the Massachusetts Institute of Technology in a place they call the Media Lab. It’s a research lab and graduate school program that long ago outgrew its name. Today it’s creating technologies to grow food in the desert, control our dreams and connect the human brain to the internet. Come have a look at what we found in a place you could call– the Future Factory.

Read the entire article here

How Early Is Too Early to Teach Computer Science?

Parents and teachers are concerned about young kids getting too much screen time. Should they allow any? Will kids fall behind if they aren’t allowed much screen time? How and when should youngsters learn how to use computers, learn about computer science, and start developing skills that eventually lead to coding? These are all valuable competencies that will serve them well in the high-tech workplace someday. But do kids really need to start getting prepared for the jobs of the future as early as kindergarten? Good news for concerned adults: It is possible to teach computer science concepts to very young kids—without using computers at all! kidandcomputer

What is Computational Thinking?

Computational thinking (CT) is “thinking like a computer scientist.” It is the thinking and the skills involved in formulating a problem and expressing its solution(s) in such a way that a computer—human or machine—can carry out. Computational thinking is the foundation of computer science, and includes problem analysis and decomposition, algorithmic thinking and expression, functions and abstraction, and debugging. These may sound like complex concepts, but these are all skills that are well within the grasp of young kids to not only comprehend, but to enjoy.

Computational Thinking ‘Unplugged’

During gym, recess, or play time, adults can make fun challenges for kids that lay the foundation for coding skills. Here are a few examples:

  • Problem Analysis: Supply your kids with blocks, a piece of wood, balls and colored tape. Challenge them to use the blocks to build a ramp for the ball to roll down that will make the ball reach a line of tape that is placed a short distance away.
  • Algorithmic Thinking: Help your kids to describe, step by step, a simple task such as eating cereal. Without knowing it, they’ll be exploring important coding concepts like sequencing (put cereal in bowl and then put in milk), loops (chew each bite of cereal 20 times) and conditionals (if the bowl is empty, stop eating).
  • Patterns and Pattern Recognition: Make a sound pattern with rhythm instruments, or even more simply, with a pot and spoon. Start out by making a pattern that your child can copy back. BANG, BANG, tap, BANG, BANG, tap . . .

You may already be doing some of these with your kids already, without realizing that they are learning computational thinking.

A Solid Foundation Lasts Into Later Life

Why start kids early? Kids who take computer science classes later in school have a tremendous advantage if they’re already comfortable with core programming concepts such as algorithms and debugging. Developing these skills early gives them confidence to tackle harder and harder challenges as their education and life experiences progress.

Read the original article here