The basic understanding of logic and design is that processes should be presented in a way that demonstrates certain algorithms, i.e. the description of a process should be precise and should contain detailed instructions on what to do in each of possible causes. This is needed to ensure that machines can read these instructions; however, logical instructions are important in processes conducted by humans, too, because they provide comprehensive and structured descriptions of workflow. Two types of logic and design tools are flowcharts and pseudocode; also, the way they work together can be discussed.
Flowcharts are diagrams that present processes and workflow in detailed, step-by-step way. In these diagrams, several types of elements of a process are recognized; the main ones are activity and decision. To distinguish the former from the latter, activities are presented in rectangular boxes, while decisions are presented in diamond-shaped boxes. Each decision element has a certain number of options (usually “yes” and “no”), and activities are indicated for each of the options by connecting the decision box to an activity box with an error. Also, decisions and activities can be accompanied by comments or annotations. According to Xinogalos (2013), flowcharts have been heavily used in introductory computer science courses to explain to learners what algorithms are because flowcharts are examples of programming thinking in which processes are described with precision and without ambiguity.
Pseudocode is a method of presenting the way a computer program or a different algorithm works; however, instead of being strictly structured according to the rules of a certain programming language, pseudocode is informal. Informal structuring is needed to avoid technical aspects of building algorithms and simplify the representation of a problem-solving process. When teaching about pseudocode, educators stress the logic behind breaking a process into a series of steps instead of stressing syntax standards. Pseudocode resembles codes in actual programming languages; therefore, different types of pseudocode exist that are similar to different programming languages. Pseudocode is more intelligible than machine code and intended to be read by humans rather than machines.
Flowcharts and pseudocode can work together. Both are forms of presenting the task-solving process in a structured manner. However, Andrzejewska et al. (2016) found that the use of flowcharts and pseudocode can be challenging because a lot of time is needed to learn how to create them and to design them. If the task is simple, more time is spent on presenting the process of solving it in the form of a flowchart or pseudocode than the solving process itself takes. However, it can be argued that, in solving complicated tasks, flowcharts and pseudocode can be helpful because they break the process into certain steps and help problem solvers see how the process should be approached, what weaknesses exist, and how the process can be improved if there is a need for improvement. The same processes can be presented in both forms; however, flowcharts are graphical and may take a lot of space on paper (also, additional software may be needed to create them), while pseudocode is textual and takes less space but can be more confusing and less intelligible than the visual representation in a flowchart to a person who is not familiar with programming languages at all.
Both flowcharts and pseudocode are methods of presenting processes in a structured manner. While the former is usually more spacious, it may also be more intelligible for some because it is visual; the latter takes less time to be built but may require more training to be mastered, used, and understood.
References
Andrzejewska, M., Stolińska, A., Błasiak, W., Pęczkowski, P., Rosiek, R., Rożek, B.,…Wcisło, D. (2016). Eye-tracking verification of the strategy used to analyse algorithms expressed in a flowchart and pseudocode. Interactive Learning Environments, 24(8), 1981-1995.
Xinogalos, S. (2013). Using flowchart-based programming environments for simplifying programming and software engineering processes. In Global Engineering Education Conference (pp. 1313-1322). Berlin, Germany: IEEE.