Programming
Programming is probably the most debatable part of digital competencies. Why should one be able to program? How is programming different, for example, from medicine or economics, whose applications we use every day, but at the same time, we cannot work with them methodologically, accurately or practically?
One possible response is: “If we use programs to solve various tasks and life situations, it would be good to know how they work, how they are programmed and created. This will create a greater difference between the controlled and the controlling. One will not be so dependent on technology and will be able to approach them more critically.” But we would like to show that such a concept is fundamentally problematic, and the motivation for programming should be part of digital competencies.
First of all, it must be said that knowledge of basic algorithmic structures, such as conditions, procedures, functions, or cycles, does not increase the ability to understand complex and complex programs. To guess what is behind relatively trivial operations, such as searching for files on disk, one must be a skilled expert, and programming alone will help one relatively little. We should also not combine computer science as a scientific discipline and programming, it is primarily a craft.
At the same time, knowledge of programming does not create any competence to repair a damaged program on a computer. Also, the degree of dependence or critical insight is not significantly related to the programming itself. After all, most technical applications of software are so complex that it is not possible to include them in a general competence framework.
We believe that sources of motivation can be found in three areas. The first is the development of algorithmic or computational thinking. The analytical ability to identify the problem, break it down into smaller independently study able parts, and suggest a procedure for processing these small parts. It is thus a form of application of the mathematical way of thinking, which is closely related to the symbolic analysts of Robert Reich - he must have just such a mental ability or skill.
The second motivation can be found in particular areas of human activity. A data journalist, an astrophysicist modeling a stellar atmosphere, or a person looking for suspicious banking transactions have in common that they are not computer scientists, but they need to work automatically with data for their work. About the previous two professions, we could say that they should have the competence to find the code for your issue, edit it, and paste it into the application to get the required result. Knowledge of programming is essential for understanding what they are looking for, how it works, and possible code modifications. An increasing number of professions will use simple scripts to work with data, so it is helpful to know how to work with them.
The third motivation may be related to programming knowledge-creating a particular natural bridge between two parts of Digcomp, i.e. between content creation and problem-solving. The ability to look for situations in the world that can be solved through programming is possible only if one has minimal experience with it.
Again, it is possible to see a specific distinction between programming and coding. While knowledge of coding, i.e. writing a particular code for a particular programming language, is not universally needed, or one can be expected to learn the language he will need in practice, knowledge of a specific thought structure is stable and unchanging.
We also believe that if we have said that people have difficulty thinking about their activities in such a structured way that it is possible to use algorithms to solve routine tasks, it makes sense. It is vital to strive to develop just such a way of thinking. It will have a meaningful impact on competitiveness and labor productivity, and the job opportunities of the individual. We will thus perceive programming as a specific premise or a cornerstone in solving problems with the use of technology.
It is not easy to define computer thinking precisely. We want to indicate at least some directions that thinking about this issue could take. Everyone agrees that computational thinking is not coding but rather the ability to believe in a certain way about the world around us. The important thing is that computational thinking is the thinking of people, not machines. It must be thought of as permanent specific human quality of thought and not something that machines can easily do instead of man.
Jeanette Wing says: “Informatics thinking is thought processes involved in formulating problems and solving them that allow them to be effectively implemented by an information-processing agent." So it's first and foremost about how and how to use the information and data around us. It is sometimes said that everyone has enough data, but it is a problem to develop what it could be suitable for. The time of data refers to the amount of data and the fact that a person seeks, invents tools for their use, and the goals to lead. The second key thing is that informatic thinking is a matter of being able to formulate a problem well. Respectively express it sufficiently accurately, clearly, and in a structured manner.
Wing is one of the information thinking experts and emphasizes that it cannot be mechanical thinking but creative thinking. He writes that this is a necessary skill to stay in the information society, which is a fascinating and robust statement. How many people, or what part of the population, have it? Isn't this one of the limits to the development of the entire information society?
Informatic thinking combines and complements mathematical and technical thinking, which are two ways of solving problems or looking at the world, which can sometimes be confused. The models used are mathematical (as in any science) but are limited by the design capabilities of machines. On the other hand, computer science is similar to technology in that it produces tools that interact with the physical world. However, he also creates his worlds, not limited by physics, i.e. those close to the worlds of mathematics.
According to Wing, informatic thinking, of course, involves conceptualization, but it requires thinking at several levels of abstraction simultaneously, which is crucial for all computer thinking. To a large extent, the ability to think abstractly on multiple levels simultaneously is one of the critical topics of the entire educational process. Computers do not believe in the abstract, such complex abstract reasoning is therefore essentially anthropocentric.
In addition to Wing, it is interesting to ask, for example, the concept of computer thinking according to Google. This includes a set of techniques and skills for solving problems used by software engineers when writing commonly used applications (search, email, maps). However, informatic thinking can be used in almost any subject. Informatic thinking includes, in particular, problem decomposition, pattern recognition (e.g. in stock market charts, but also in processes), pattern generalization (e.g. the creation of abstract models), and the design of algorithms.
We want to emphasize that Google concretizes those worlds, models of abstraction, into two key themes - pattern recognition and generalization. These are typical concepts of arbitrary scientific thinking and, at the same time, elements that have a firm ground in the philosophy of science and knowledge. So again, what is typical for a person is highlighted here. At the same time, however, it is necessary to keep in mind that the basic concept of machine learning is precisely this - searching for models of the difference of various elements in a particular set. Therefore, it is necessary to look for ways in which these activities can be performed so that one does not compete with machine learning. In such a duel, as we have stated several times, there is no chance of success.
We want to show here a few examples that scripting or using general algorithmic ("programming") structures are not entirely outside the ordinary human experience. For example, if we use Word, we may be required to eliminate all one-letter prepositions in the text at the end of the line because this is a typographical error.
The procedure is relatively simple - we are looking for an expression that would describe a one-letter preposition and replace the common space after it with a fixed distance that binds it to the following word. So just put “Find and replace" and in the field what to insert “<(?)>" And in the area what “\ 1 ^ s". The sequence is relatively straightforward, but the important thing is that it was an algorithmic procedure that used regular expressions to automate an activity for a person. Another example is the bulk editing of photos, which we need to reduce all at once, for which batch processing is used, which is supported by, for example, IrfanView.
Also, mathematicians who use Mapel for calculations, statisticians with R, or rate graphics can all help by scripting. Scripting does not necessarily mean well-thought-out knowledge of the optimal procedure, but it is an idea of automating an activity using technical means. Computer art is a particular area in the fine arts and is gaining ground in music. Thus, it cannot be said that it is only a technical or mathematical domain, but being able to script something simple in a suitable tool is often necessary for practical work.
If a person uses an intensive spreadsheet, then they have certainly met with macros that are in Excel formed in the language Visual Basic. It is a relatively simple language that aims to automate some tasks using conditions, functions, and cycles. Macros can be helpful both to increase work efficiency and especially when one needs to link data from multiple tables. What's interesting about macros is that someone before them has handled almost everything a person needs - macros are, therefore, a typical example of code that is shared, copied, and whose users only slightly modify parameters.
Thus, this programming concept points to the bridge between problem-solving using technology and programming itself. The fact that one realizes precisely what one wants to do and in which correct steps is essential for finding ready-made codes that can then be used. While everyday speech is relatively loose when it comes to formalizing search requests, if we don't know exactly what we're looking for in the code, any search is highly challenging and with uncertain results.
We would also like to show why there are so many programming languages. People often ask what language to start with - whether C, C ++, Python, Pascal, Lisp, Perl, or Java. In general, a new programming language is created when a class of tasks appears complex or inefficient to describe in another language. It rarely happens (if we are talking about “normal programming"). The code cannot be converted between languages. Therefore, it is a question of what class of problems or tasks we want to solve, and it is advisable to choose a programming language accordingly.
Programming as a logical step structure is the same for all languages, although there are groups that are closer (for example, logical, object-oriented,…) and have only the most general principles in common.
We agree with Wing's idea that when programming, one creates a new world of one's own. Josef Prokeš puts this in connection with the fact that many computer scientists have a specific divinized idea of themselves. They are creators, just like the Lord. They differ only in the world in which they program. This statement is an obvious hyperbola, but perhaps at least partially reveals a world that can be made accessible to man by programming.
The algorithmization of everyday life represents a new and relatively fundamental topic about digital competencies. In her article Algorithms (and the ) every day, Willson describes how algorithms and technologies fundamentally change the ways we solve problems and structure our knowledge. Put simply - technology is changing patterns of thinking on a much deeper level than we have ever imagined. It can be said that it is no longer worth distinguishing between reality influenced by algorithms and unaffected - algorithms fundamentally shape our whole existence, and we must learn to exist in this environment.
In the most elementary view, we can identify the four layers into which we enter the algorithms of everyday life and which we must be able to think more profoundly and systematically.
The use of technology in everyday activities - this is a particular “softest" layer, which refers to the fact that whatever we are talking about, certain technologies will always interfere with them. We get up via alarm clocks on mobile phones. We dress according to weather forecasts from the Yr.no server, etc. It would be difficult for us to find an area in which technology will not be systematically applied. In other words; Algorithmization enters our lives in the form of specific tools that allow us to do many things better and more efficiently.
However, other effects also fall into this area. For example, services like Tinder are changing the process of dating and making friends. To some extent, they may still be perceived as socially problematic, but the fact is that human interactions have fundamentally transformed this area. Getting to know someone today and thirty or even a hundred years ago is different, and technology makes a vital contribution to that. Similarly, we could find other areas (ways of shopping, searching for information, etc.) that we used to do “differently". Specific services and technologies, and their appearance, have been transformed.
This aspect can also have a negative dimension, as can be seen in the example of sharing (uploading photos of children to the Internet). It is clear that parents do not understand how digital technologies work. The available tools to change the way they communicate with others may be dangerous for their children.
This lowest (or most accessible) layer of algorithmization of everyday life is, on the one hand, the banalest - it is not about much programming, rather about user prowess. Still, at the same time, it has non-trivial effects on everyday lives and the standard processes we perform. Eiband argues that the encounter between technology and man can lead to misunderstandings and communication noise on both sides. The technique needs the expected answers, a man accessible and an understandable interface to interact with it.
There are activities that we do every day, we do by hand, and we don't have to. For example, when we leave the house, we turn off the WiFi on our mobile phone and turn on the data, and when we return, we do the opposite. At first glance, this activity may seem trivial, namely that it costs nothing. But in reality, it is associated with an essential cognitive burden - we have to think about it and not about other things. This is an important topic because it is the effort to reduce the cognitive burden essential for the development of creative thinking or to focus on really challenging issues.
The ability to find tools (typically in the simplest case Zapier or IFTTT, in the more demanding case to batch process tasks) will allow us to automate these algorithmically designed tasks. It will lead to higher productivity, opportunities to focus on your work, and so to a chance to get a better job. We will have to learn to think of the world as a space in which we apply algorithmization in many spheres of our lives. Discussions that life is not simply algorithmic are undoubtedly relevant and lead to opportunities to think about one's own life in a broader perspective, but at the same time, as Neyland argues, often lead to incorrect conclusions. We cannot do without the ability to use algorithms to process these everyday activities. At the same time, they are likely to gradually move towards reducing routine activities at work, which can be a pleasant effect.
The use of algorithms for decision-making is probably the most controversial and, at the same time, the most important and most profound area of change in which we find ourselves. Willson mentions that algorithmization means a shift in the distribution of power and raises a fundamental question for us - what is it that we want machines to decide for us? At first glance, this may seem like a futuristic scenario, but to a large extent, it is already happening. Algorithms play a crucial role in what we are used to calling thinking and decision-making:
- Gmail can sort mail and remind us that we haven't replied to a message for a long time, which has a fairly strong effect on what messages we pay attention to (filters important and unimportant) and the structure and prioritization of our communications.
- Facebook tries to solidify our views, which is a reasonably well-known thing called filter bubbles. This social network tries to select such information that will resonate with our opinions and gradually lead to the fragmentation and polarization of society, to the disintegration of the possibility of shared experience.
- Google sorts search results by our previous experience and also filters results by the places we search from. Therefore, the information we use for decision-making is not objectively located anywhere but is fundamentally formed through algorithms because few people read more than the first page of results.
This list could be continued, however, we would like to draw attention to another phenomenon that is gaining more and more popularity, namely the so-called Bayesian beliefs applications - we enter the parameters of our decision-making into them, and the application tells us how to decide. Bayesian algorithms and statistics today enjoy general popularity across scientific disciplines, but their participation in decision-making is exciting. First of all, probably because one loses a certain autonomy in the election, but also (on the other hand) by the fact that the election is usually not very intuitive, but better than one would typically do.
Kahnemann points out that cognitive distortions, which have been very beneficial in primitive societies, can be very problematic for modern society. Watching what place we finally give Bayesian beliefs to instruments in our lives will be very interesting and instructive. Can we rely on them, will we turn to them, or will we reach for them only under challenging moments when we do not know what to do? Each of these questions would have interesting psychological and ethical consequences. Their analysis will largely depend on what the society we live in five years will look like.
The ability to create your algorithms to solve specific tasks. Here are a few small notes. The first is the focus on particular tasks, not to algorithmize everyday life. Still, DigComp is not to make the population composed only of programming professionals but able to use technology to solve real problems. We believe that some minor algorithmization combined with the ability to see the issues that can be processed in this way will be significant.
At present, databases of algorithms are beginning to emerge, which are designed so that the user searches for finished pieces of code or entire algorithmic structures, which are then modified for specific purposes. This is much more important than the ability to generate some custom code from scratch. We must try to build on finished projects that someone has already created and then modify such code. At the same time, we need to see trends (such as AutoML from Google) that show that programming will be increasingly associated with interacting with the algorithm, not with the encoding itself.
Let's look at the whole area of algorithmization of everyday life. As we have described it in four layers, it is clear the significance of the complete “programming" competence in the DigComp framework - it will allow a person to function for a long time in a society that is algorithmized. An active person is thinking, moving in the labor market, or learning. Rejecting or neglecting programming competencies is, therefore, a socially hazardous area. At the same time, our four-layer model offers a relatively straightforward guide or structure on how to improve and develop in individual regions gradually.