Computers, the Internet, and the Web changed our lives in significant ways. We often can’t do without them. We control such powerful systems through their user interfaces to make them work for us.
Interfaces are not limited to computers or computing. In general, the easier it is to control any given system through its interface the better. This article focuses on the interface from a computational thinking (CT) perspective, giving it the proper attention it deserves.
What Is An Interface
According to the Oxford Languages, an interface is “the place at which independent and often unrelated systems meet and act on or communicate with each other” and also “a surface forming a common boundary of two bodies, spaces, or phases such as an oil-water interface.”
The word is a combination of “inter” and “face”. Two systems face each other to interact through their respective outer shell. Such a shell
• encases and protects the insides of a system
• provides a way to receive input from and to send output to the outside
An obvious example is the interface between a computer and its user. Computer user interfaces (UIs) have evolved quite quickly. Not so long ago, people are still using punched cards to run computer programs and getting results from line printers. The slow turn-around time and lack of interactivity were serious obstacles. Later, the keyboard and CRT (cathode-ray tube) display combine to provide a command line interface (CLI) where a user enters commands interactivity and receives results immediately on the CRT. The operating system component that provides the CLI is known as a shell. Examples are the UNIX sh and csh, the Windows DOS CMD and PowerShell, and the Linux bash.
CLIs are fine for experts. Others had to wait until the invention of the graphical user interface (GUI). According to the wired, “in 1979, the Xerox Palo Alto Research Center developed the first GUI prototype.” The Xerox Alto’s GUI used a graphics display and a three-button mouse. Soon, based on this breakthrough, Apple developed Lisa, the first GUI-based computer available to the public.
Today we take the GUI for granted. What will we do with our computers or smartphones without the GUI? We need to point (mouse or touch screen), to click buttons/links, to press, to drag and drop, and to see immediate feedback. Or we will wonder if the computer is broken.
Yet, it can be even more convenient if we add voice control to the user interface. Modern speech recognition systems work rather well and allow voice input. The Amazon’s Echo, and Google’s “Hello Google” are examples. However, voice is nice for short commands but tedious for lengthy input.
The Nature of An Interface
An interface is where two independent systems meet and interact. For example, a simple lamp has an electric plug to insert into a socket as its interface to an electric power system. The plug needs to be of the right type, or it’s impossible to connect to the socket. The lamp also has an interface to the user, the on-off switch.
At an interface, one system, a user for example, is usually the client and the other, an application (app) for example, is the server. The two systems interact via the interface which controls and regulates what interactions, in what manner and form, can take place between the two.
Using their interface, the client often would communicate input such as commands and/or data to the server, and the server would return output such as results and feedback to the client in response.
The input can almost always be thought of as consisting a set of attribute-value pairs. For example, at a bank teller interface, the input may be
Date: June 1, 2022
It is up to the client (interfacer) to provide the correct input and for the server (interface) to check the validity of the input received. The two systems can thus interact to get the job done.
Interfaces In Computing
In addition to the UI, modern computing systems depend on various other interfaces to make their many parts work together.
At the hardware level, the motherboard of a computer provides the electrical connections by which the other parts communicate. Thus, the motherboard is a physical interface. Other standards-based electronic interfaces include USB (Universal Serial Bus), FireWire (high-speed data transfer), Ethernet (local area networking), IDE (Integrated Drive Electronics), SCSI (Small Computer System Interface) and PCI (Peripheral Component Interconnect), just to name a few.
The operating system (OS) is central to a computer. It interfaces software, hardware, and users. Each app may have its own user interface. But more importantly, an app also provides an API (Application Programming Interface) to govern how another app can control/use the particular app. In other words, two well structured programs can interact and cooperate through prescribed APIs.
Within a software system, be it a large operating system or a particular app, you’ll find program modules that form parts of the software system. The modules use interfaces defined by function/procedure calls to cooperate. Such an interface protects the internal working of a program part from external interference, resulting in more robust programming units known as objects. Today, the interface centered OOP (Object-Oriented Programming) has become a predominant programming methodology.
Now we look at computer networks. At the networking level, IP (Internet Protocol) is the basic interface. On top of that there is TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). And on top of these two, we have SMTP, POP, and IMAP for email; HTTP, HTTPS for the Web; SSH and SFTP for secure login and file transfer; BitTorrent for peer-to-peer file sharing. There are many others.
Interfaces In Nature
Of course we understand that computers and computing depend heavily on interfaces. But so do almost everything else. Animals use eyes, ears, nose, and skin to interface and interact with the environment. Many use gills and lungs for respiration. Mouth, teeth and tongue form food interfaces. Flowers and nectar become specific pollination interfaces. Songs and calls attract mates.
Interface Between Humans
Human beings are independent systems. They interface with one another easily and constantly. With speech we easily interface verbally. Building on speech, we developed words for written communication. Additionally, we have music, dance, and poem for other expressions.
Hence, forming an interface can be much more than where to put which color buttons on a device. It can be as complicated as developing a language, a set of symbols and their meanings, to represent concepts and operations in a sophisticated domain, such as mathematics or computer science.
Today, human interfacing has become even more instant and convenient because of phone calls, email, texting, online chat, and social media.
Abilities such as hearing, vision, voice, physical movements come naturally. To complete our toolbox, we need skills such as speaking, handwriting, language (vocabulary, syntax and semantics) etc. We also need to learn gestures and interaction protocols such as handshake, clasped fist, bowing, elbow bump, high five, salute, hand clap, goodbye and so on.
Just like in the Internet, well-defined protocols specify how humans interact in formal occasions. For example, diplomatic protocols govern how government officials must behave when conducting foreign affairs.
Interface Skills Are Valuable
Becoming skillful with interfaces can be important and valuable. For example, touch typing is a good skill for almost everyone. Those who excel in it can find jobs as typists or keyboarders. Good driving skills can even land you good jobs in the shipping industry.
In the information age, the ability to efficiently and effectively use computers, apps, the Web and Internet can be lucrative. Such skills basically deal with interfaces of different kinds—text editing, word processing, spreadsheeting, tax reporting, accounting, photo/video/audio processing, and so on.
Among people, good interpersonal skills are very advantageous. They are critical for jobs in personnel relations, sales, marketing, customer service, employee management. Lastly but importantly, so are they for career advancement.
Careful When Interfacing
Substantial tasks usually consist of parts to be completed by a number of different independent systems. They interact and collaborate to perform the entire task. Let’s assume for now that each independent system is error free and works correctly within itself. Then what can go wrong would be mistakes or errors made at some interface. Because something unexpected can happen at an interface without being realized by systems on either side.
Thus, we must exercise caution when interfacing. When relating to another person, the innocent remark “see you at seven thirty tomorrow” can be a trap because there is no mention of AM, PM or the date. It is always better to give a precise date and time to avoid potential problems. This is especially true when texting or emailing.
Be careful with numbers. A price 15.99, for example, may be in US dollar, Canadian dollar, Euro, or RMB. A date such as 04/05/2022 could be in April or May. A temperature can be in Fahrenheit or Celsius. A weight can be in pounds or kilograms. A number can even be invalid such as 560 or −7 as value for an aqe.
We can go on. The point is to be correct and precise when interfacing.
Here is a real incident.
After traveling nearly ten months to Mars, the NASA Mars Climate Orbiter burned and broke into pieces in September 1999. What happened? According to CNN “because a Lockheed Martin engineering team used English units of measurement while the agency’s team used the more conventional metric system for a key spacecraft operation”. The erroneous navigation maneuver had disastrous results.
Here is another example. The Heartbleed security bug (disclosed in April 2014) was found in the widely used OpenSSL library (for secure online communication). It was caused by the TLS heartbeat extension failing to validate the length of input data. As a result, sufficiently long input can lead to leaking of protected and potentially sensitive data beyond the bounds of the input buffer.
We strive to be exact and precise when interfacing. But, we must also be aware that people can be deliberately imprecise and vague in order to misguide or even deceive. Such techniques have been developed to a fine art in elements of marketing and advertising.
Because of the importance of interfaces, we want to properly design them, making them easy to understand and use. To avoid mistakes, we want to make them foolproof.
Take everyday appliances for example, well-designed interfaces make them simple to operate and control. They not only highlight the functions of an appliance but also help its marketing. Actually, user interface (UI) and user experience (UX) design has become a profession. Experts help define, develop, test, and improve UI/UX as integral parts of products and software.
Here are some basic principles of interface design:
• Being logical, consistent, and easy
• Placing users in control, allowing easy editing, corrections, undo/redo operations
• Making operations easy to remember and foolproof, providing appropriate confirmation and feedback
• Supplying features for beginners and experts
• Anticipating use cases and performing thorough testing
If users feel comfortable interacting with a device (hardware or app) and regard it as user-friendly, then the UI/UX design is on the right track.
Some interfaces may stay constant and basically the same for a long time. But most interfaces, like other things, will change and improve with time and advancing technology.
We knew that computer user interfaces moved from punched cards to GUI and even with voice input added. GUI itself has moved from desktop computers to laptops, tablets, and smartphones. Even body and eye movements are getting applications in UI.
Good old televisions have changed from CRT displays with roof-top antennae to smart TVs with huge high-resolution displays, Internet connections, and built-in computer chips for streaming videos from all kinds of sources apart from broadcasts. In fact, the term TV has lost its original meaning. Today there is little difference between a TV set and a computer workstation.
The modern automobile driver interfaces are a far cry from those in the Ford Model T era. Before long, there may not be a steering wheel or brake pedal. The cars will be driving themselves!
When interfaces evolve and advance, so must systems that depend on or use them. Of course, users must also adapt and learn new skills or be left behind.
Interfaces are bridges for collaboration and interaction between independent systems.
Starting with interfaces for computers and in computing, we have expanded to all kinds of interfaces. Complicated interfaces are built upon more basic ones. It is fair to say that the interface is everywhere. it impacts our daily lives. Have you stories of your own encounters with it?
Ignoring the interface can be costly. Once in the past, the American auto industry complained about cars not selling in Japan. Much to its surprise, the Japanese drive on the left side of the road but most US cars have their steering wheels on the wrong side!
We must also be careful about potential troubles or mishaps happening at the interface. These computational thinking (CT) principles, among others, can help avoid problems at the interface:
• Communicate clearly and precisely
• Pay attention to details
• Avoid contextual problems
• Obtain confirmation and feedback
Even the best designed interface has room for improvement. And it is up to the interfacer to be aware so as to avoid problems or mistakes. It always pays for the interfacer to have enough knowledge of the interfacee side. Clearly, good mechanical knowledge of a car can make driving safer. Similarly, sufficient knowledge of potential interfacers (clients) is a must for an interface design.
We have discussed many aspects of the interface. What is the one most important takeaway? “Overlook the importance of the interface at your own peril.”
To find other interesting and illuminating CT articles, please visit my Computational Thinking blog (computize.org/ctblog) at any time.
A Ph.D. and faculty member from MIT, Paul Wang (王 士 弘) became a Computer Science professor (Kent State University) in 1981, and served as a Director at the Institute for Computational Mathematics at Kent from 1986 to 2011. He retired in 2012 and is now professor emeritus at Kent State University.
Paul is a leading expert in Symbolic and Algebraic Computation (SAC). He has conducted over forty research projects funded by government and industry, authored many well-regarded Computer Science textbooks, most also translated into foreign languages, and released many software tools. He received the Ohio Governor's Award for University Faculty Entrepreneurship (2001). Paul supervised 14 Ph.D. and over 26 Master-degree students.
His Ph.D. dissertation, advised by Joel Moses, was on Evaluation of Definite Integrals by Symbolic Manipulation. Paul's main research interests include Symbolic and Algebraic Computation (SAC), polynomial factoring and GCD algorithms, automatic code generation, Internet Accessible Mathematical Computation (IAMC), enabling technologies for and classroom delivery of Web-based Mathematics Education (WME), as well as parallel and distributed SAC. Paul has made significant contributions to many parts of the MAXIMA computer algebra system. See these online demos for an experience with MAXIMA.
Paul continues to work jointly with others nationally and internationally in computer science teaching and research, write textbooks, IT consult as sofpower.com, and manage his Web development business webtong.com