While modern computer languages are based on the English language, many of us are quite visual people. We can begin to learn how to program computers by drawing what we need the computer to do. This is similar to how business people might draw a flow chart on a board or a battle simulation on a map. The key is to express what we need to accomplish using simple symbols. Later on, we can either program the system to match or we can expand on the diagram. This involves taking the simple shapes and expanding them into more detailed sub-drawings. The concept of drawings is especially helpful for those people for whom English is not their native language. Most programming languages use English words such as "FOR", "IF", "WHILE" and other simple words. Those who don't speak English are basically forced to understand the meaning of these English words and adapt their language and thoughts to them. A drawing removes the dependence of English from the programming design and allows abstract concepts to be developed. With a good drawing, a computer program can be easily developed in nearly any language appropriate for the tasks. The drawings can take certain forms to describe various views of the desired system. Each completed drawing is called a diagram of a particular type such as a "Use Case Diagram", a "Data Flow Diagram", a "Process Flow Diagram" or any of several other names of diagrams. These diagrams are closely related to Algorithms, the simplistic expression of computer program steps in a language that resembles English.

Use Case Diagram
This tool allows the computer program designer to express the desired system in terms of the various users of the system and the kinds of things that pertains to each user. Known as "actors", the users are either internal or external to the system. A deli sandwich counter is often used to explain how a use case diagram can be drawn. The customer is an actor. The "system" is the deli counter. The sandwich maker is another actor. The customer actor requests a sandwich. The sandwich maker makes it. There are certain things the customer can do like order the sandwich, pay for it, take it away. The sandwich maker makes the sandwich, orders new supplies, cashes in the order. The action "make a sandwich", has internal features, mostly to do with the options requested for the sandwich. A simple use case might for the deli sandwich counter might look like this:

Sandwich Use CaseSandwich Data DiagramPhysical Data Diagram

Logical Data Diagram
Another useful tool for computer design is the "Logical Data Diagram". This shows the separate kinds of data that are stored in a computer system. Each type of data is shown in a box. The name is shown at the top of the box with the individual data elements below it. The logical diagram just represents the data with no specific details. Cost is shown but not whether it includes fractions, the type of currency, upper or lower limits, no details at all. Descriptions might be listed but now whether it is 5, 10 or more lines, whether the text is in English or not. No assumptions are shown that might describe the data. The logical data diagram is designed to get the highest level facts down for later investigations into the relevant details.

Physical Data Diagram
This diagram expands on the Logical Data Diagram. In addition to the starting, simple description, the designer adds additional data attributes to the diagram. The types specific to each data element are added. Thus the "Start Date" would be shown as type "Date". "Cost" would be shown as type "Currency". "Number of Visits" will be a "Number" type. The number data types might be shown as "Integer", (with no fractional part), or "Real", (with a fractional part). Counters are integers as they have discrete values, (1, 2, 3, etc). Currency could have fractional parts, (cents). Other data types that might be represented on the diagram include Boolean, (Yes/No) or text. Many physical data diagrams assign special usage terms to the type of the data. All emails will be of type "EMAIL". When people see that a data element is of type "EMAIL", they will know some of the basic attributes that apply to the data element. The same holds for dates, currency or other frequently used data types. Here is the sandwich counter Physical Data Diagram:

Children Learning to Program With Diagramming Techniques
Computer diagram tools are very easy for children to learn. They can concentrate on what they want the computer to do using high level concepts. If they are programming in the Alice language, they will exposed to the concepts of objects such as the Alice or rabbit characters. They can make a diagram to show what they want these characters to do in a story. Rather than concentrate on a picture of them, the child can make a diagram that outlines what the computer will do with the characters:

The student can describe the steps in the computer system using a simple diagram like this. Each of the steps is a process that will be added into the program. This allows the student do a whole project step by step. The student is learning about programming as they develop a diagram. A story is made which can be made into an Alice program later. The diagram frees the child from the specific parts of the programming language until the child is ready for them.

Using diagrams and algorithms as aids, computer programming students can start with simple descriptions of their applications. As they refine the diagrams to show the steps involved, they can improve the planning aids to reflect additional knowledge as it is discovered. In time, the planning aids are sufficiently detailed to allow direct translation into the exact syntax required by the computer development language. Students will learn that their diagrams and algorithms can become quite finely detailed during the beginning of study efforts. In time, as they become skilled, diagram and algorithm steps can represent more complicated steps. The student will be able to easily mold these into the computer language as the student gains experience. By focusing on diagrams and algorithms, a student reduces their dependence on any particular computer language. This reduces the chance that a computer language will lose relevance. It also allows for the use of a new, better language that might become popular. Diagrams and algorithms can easily allow the student to translate applications into new computer languages as necessary.