Computational thinking and programming

When we look at various models of AI literacy, we can say that a large proportion of them include the requirement that a person should understand how they work. The question is what exactly this means – in the Faculty of Computer Science, it undoubtedly involves the ability to model reality using a system of a large number of dependent differential equations; in mathematics, it involves understanding non-trivial probabilistic models; and in introductory AI courses, it involves knowing how to write prompts and understanding what hallucinations are. All of this is important, but this competence is increasingly focused on a person’s ability to analyse and articulate what they want, break it down into steps, and devise ways of interacting with technology that enable them to carry out various demanding tasks and achieve their goals. AI has thus become a technology that, on the one hand, gives meaning to this entire competence even at the level of the ordinary user, and, on the other hand, bridges the gap between computational thinking and programming itself.

No description

No description

Why learn to programme today? We might come across the following answer: “If we use programmes to tackle various tasks and life situations, it would be good to know how they actually work, how they are programmed and how they are created.”

“This will create a clearer distinction between the controlled and the controller; people will be less dependent on technology and able to approach it more critically.” However, we would like to show that such a view is fundamentally problematic and that the rationale for why programming should be part of digital literacy must be sought elsewhere.

First and foremost, it must be said that knowledge of basic algorithmic structures, such as conditions, procedures, functions or loops, in no way enhances the ability to understand complex and intricate programmes. To even begin to grasp what lies behind relatively mundane operations, such as searching for files on a disk, one must be a fairly proficient expert, and programming itself will be of only negligible help in this regard. Nor should we conflate computer science as an academic discipline with programming, which is primarily a craft (albeit one that is cognitively and experientially demanding – perhaps this is precisely why there are so many tools utilising artificial intelligence that significantly simplify the programming process).

At the same time, knowledge of programming does not confer the competence to fix a faulty programme on a computer. Nor is the degree of dependence on, or critical approach to, programming itself particularly relevant. Indeed, most technical software applications are so complex that it is not possible to classify them within 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.

No description

No description

Vibe coding

Vibe coding is a specific form of programming or computational thinking – depending on the perspective from which we choose to view this topic.

Vibe coding is a software development process in which the ‘programmer’ does not write code directly, but describes the software’s functionalities in natural language, and artificial intelligence then generates the application – or rather, its code – itself. This definition provides an important framework that enables us to think about programming. It is a process in which the requirements for what a given application should or should not be able to do are gradually refined, and an interface is often used which shapes the code structure through the concept of communication in natural language. Vibe coding transforms the very way we think about certain aspects of programming – we are moving away from universal, robust solutions, optimisations and the pursuit of a certain degree of permanence and universality, towards a model of creating outputs that can serve well for prototyping or as one-off tools. At the same time, we know from the history of architecture that many buildings designed and constructed as temporary structures can easily last a hundred years.

The key skill in this approach need not necessarily be technical expertise, but rather imagination, creativity and the ability to articulate exactly what one is seeking. Just as in everyday interaction with large language models, the same principle applies here: the better, more specific and more structured the prompt, the better the results that can be achieved. At the same time, it is clear that an understanding of computer science concepts significantly improves one’s ability to debug or even describe the programme to be created, as well as the ability to think about it.

When vibe coding became widespread in 2025, it seemed that programming roles would disappear entirely, and that creative people would be able to write everything in natural language. We are gradually realising that this is a highly useful skill, one that combines computational thinking, programming and creative skills into a single whole, which is exceptionally effective in many areas, albeit not universal.

There is currently a vast array of tools that enable you to work with vibe coding, and it always depends on the style and needs of the individual teacher as to which one they wish to use. Probably the most accessible tool for beginners is the  AI Code Generator in Canva or Google AI Studio, which is considerably more robust and offers many additional features as well as integration with the entire Google ecosystem. Many people consider Claude to be the most user-friendly option, as it can create some very interesting applications. Other tools include Base44Corsor či Lovable.

Of course, nothing comes for free, and by that we don’t just mean paying for specific services and tokens for the models. There are security concerns, particularly where users might enter personal data into the system. Furthermore, there may be errors or processes that are difficult to analyse, which mean that the application behaves as intended with certain data but not with others.

No description

Informatics thinking

No description

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?

No description

No description

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. 

No description

Scripting and algorithmization around us

No description

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.      

No description

No description

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.   

No description

Algorithmization of everyday life

No description

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. 

No description

No description

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.

No description

No description

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.

No description

No description

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.  

No description

You are running an old browser version. We recommend updating your browser to its latest version.

More info