Bloom ' s Taxonomy to Improve Teaching-Learning in Introduction to Programming

Students in computer science courses entering higher education begin with computer thinking and programming languages in a curricular unit (CU) that can be referred to in various ways, like CS1 or programming fundamentals. This CU is very important for the academic and professional path of those students. Teachers and those responsible for those courses must carefully define the learning objectives, the learning strategies and the assessment of this teaching-learning. Bloom's taxonomy, in its different variations, is a powerful tool that helps in these tasks and that gives clear indications on the language that is to be used which is useful for perceiving both the level of colleagues and the level of accreditations and assessments of courses. This article provides a detailed description of Bloom's taxonomy and its changes over the years. Studies carried out in the context of teaching fundamentals of programming and using Bloom's taxonomy are listed and analyzed. In the end, the conclusions and the definition of future works are made.


I. INTRODUCTION
Introduction to programming for first year students is a very important course for the academic and professional path of those who enter a higher education institution and a computer science course. The content of these units, the objectives, the programming languages and the way everything is learned and taught need a lot of thought to be successful. In these CUs, students start in the world of computational thinking, use tools for specification and learn one or more programming languages. The teacher must identify what he wants to accomplish in the teaching process [1]. It is clear that it is easier to achieve goals when they are well defined, however it is more difficult for students to reach a higher level of cognitive development, as they do not know exactly what is expected of them during and after the teaching process. The clear and structured definition of instructional objectives, considering the acquisition of knowledge and skills appropriate to the professional profile to be formed, will direct the teaching process towards the appropriate choice of strategies, methods, delimitation of specific content, assessment instruments and, consequently, for effective and lasting learning [2]. And because teaching is an intentional (for some purpose) and reasoned act it is imperative that the objectives are well defined [3].
Bloom's Taxonomy [4] was originally presented in a document aimed at improving the communication between Manuscript  teachers. In this document, the three domains of learning were structured as following: cognitive, psychomotor and affective domain (knowledge, skills and attitudes respectively). Bloom's Taxonomy was later revised [3], [5] to form a table with the knowledge dimension and the cognitive process dimension. The table also appeared to be a simplifier for those who must clearly structure the educational objectives, helping the instructors to plan better, in addition to helping in the appropriate choice of strategies. It is important to note the accreditation criteria which, although different for each country, requires departments to provide an accurate description of educational programs, as well as the results of using these programs.
Bloom's taxonomy helps not only to create very clear learning objectives and course materials in terms of language and specification, but also to connect with the entire evaluation part of those objectives.
There are some investigations that explore the use of Bloom's taxonomy applied to teaching-learning in the introduction to programming UC facing the cycle of planning, teaching, learning and assessing. These articles have various types of approaches and describe different ways in which these taxonomies have been applied. They are generally directed towards course design and assessment. There are others which have an approach to the design of teaching and assessment materials. Other studies are focused on students and on the analysis of students' responses to exercises.
Each student learns differently and at their own pace. There are two perspectives; assuming that under the same learning conditions everyone would learn the content with the same competence and depth [6] or assuming that in the same teaching conditions learning differs in terms of depth and abstraction of the acquired knowledge [7]. One of the problems of teaching and learning is this: defining equal rhythms for everyone, which can be a success for some students and a bad experience for others. It is important to distinguish the terms "learning style", "cognitive style" and "learning strategy" which are often used imprecisely [8]. The term "learning style" refers to the mode of instruction or study that is most effective for each individual. It is suggested that instruction is provided in a format which matches the preferences of each student [9]. Cognitive styles are defined as habitual and stable strategies that determine the ways of perceiving, remembering, thinking and solving problems. The cognitive style reflexivity-impulsivity refers to preference shown by people to respond quickly versus people who prefer to do so slowly in order to reduce the number of errors in problem solving tasks [10]. In the context of school learning, the term learning strategy is currently used as a generic term to designate all the behaviors adopted by the Bloom's Taxonomy to Improve Teaching-Learning in Introduction to Programming

Sónia Rolland Sobral
International Journal of Information and Education Technology, Vol. 11, No. 3, March 2021 learner in the process of learning, and all that can influence the way in which he will learn how to do it [11]. When a teacher creates the learning objectives for a course, he must take into account who his students are and that they learn differently. Teaching-learning strategies must be clear and precise, being directed towards learning objectives and providing for different learning styles. This article provides a detailed description of Bloom's taxonomy and its changes over the years. Studies carried out in the context of teaching fundamentals of programming and using Bloom's taxonomy are listed and analyzed. In the end, the conclusions and the definition of future works are made.

II. BLOOM'S TAXONOMY
In 1948, at an informal meeting of university examiners who attended the American Psychological Association Convention in Boston, the idea to create a classification system that could be used to facilitate communication between examiners arose. At the beginning of the discussions, the question whether educational objectives may or may not be classified arose too. Between 1949 and 1953 a group of university professors and researchers participated in conferences whose contribution resulted in a document (Taxonomy of educational objectives: The Classification of Educational Goals, 1959) [4] whose editor was Professor Benjamin S. Bloom of University of Chicago. This document presents a taxonomy that became known as Bloom's Taxonomy, clarifying the three domains of learning as following: cognitive, psychomotor and affective domain (or knowledge, skills and attitudes). The Original Bloom's Taxonomy provided carefully developed definitions for each of the six major categories in the cognitive domain: Knowledge, Comprehension, Application, Analysis, Synthesis, and Evaluation. The categories were ordered from simple to complex and from concrete to abstract: lower-order skills that require less cognitive processing to higher-order skills that require deeper learning and a greater degree of cognitive processing [12].
In 2001, the review report was published in a book entitled "A taxonomy for learning, teaching, and assessing: a revision of Bloom's taxonomy of educational objectives" by Lorin W. Anderson  Each interception in the table is equivalent to the intended learning objectives and includes some subject content and a description of what should be done with or for that content. The objectives are defined in a content and in a cognitive process: respectively a noun (or a substantive phrase) and a verb (or a verbal phrase) [5]. Krathwohl's example is that a student should be able to remember the law of supply and demand in economics. So we will have "The student shall be able to" (or "the student will learn"), the substantive sentence is "Law of supply and demand" and the verb "remember", that is "The student shall be able to remember the economics law of supply and demand".
To fill the cells in the table, the intercept of the horizontal axis with the vertical axis is used. A simple example of an objective that can be placed right in the first cell is remembering the name of the editor of the initial Bloom Taxonomy document. In the Structure of the Knowledge Dimension we will have factual knowledge (in this case Knowledge of specific details and elements). In the Structure of the Cognitive Process Dimension we will have Remember. So, the objective is placed in the cell from top to left, that is, in the interception of Remember with factual knowledge. The table is then filled with the objectives. Obviously, cells (or interceptions) are only filled when they are applied, leaving in blank those cells that do not make sense in concrete learning. The table is intended to be a facilitator to clearly structure educational objectives, helping instructors to plan better, as well as helping in the appropriate choice of strategies.

III. APPLICATIONS OF BLOOM'S TAXONOMY TO COMPUTER SCIENCE
Bloom's taxonomy is broadly defined. Each discipline must use it and apply it in order to contextualize this knowledge. There are several examples of Bloom's taxonomy applied to disciplines, for example to biology [13], management [14] or music [15]. Some authors write about the application of Bloom's theory to computer science. In the study by Susana Masapanta-Carrión and J. Ángel Velá zquez-Iturbide [16] for the use of Bloom's Taxonomy in Computer Science Education, they found that 46% of the publications used Bloom's taxonomy while regarding student evaluation and 37% of the publications mention that they used or were based on Bloom's taxonomy, but without explaining how. The authors defined the following sub-categories: evaluate students, where taxonomy is used to measure students' knowledge (development of questions or problems, rating previously developed questions or problems at cognitive levels, rating student performance on cognitive levels), program instructions, specify the learning objectives for a course, create a new taxonomy, or develop educational software.
There are several types of courses within computer science education that use Bloom's taxonomy. Michael V. Doran and David D. Langan [17] report a cognitive based approach to implement Computing I and II courses, explicitly defining and scheduling course micro-objectives, mapping each micro-objective to a specific Bloom knowledge level, and helping to achieve and measure those objectives. Philip Machanick [18] presents the application of Bloom's taxonomy for the design of three different computer science courses: Data and Data Structures, Algorithms and Artificial Intelligence and Computer Architecture.
Johnson and Fuller [19] checked whether the Bloom taxonomy is appropriate for computing. They conducted a study that analyzed the 54 evaluations that were given to students by a panel of five academics who were asked to decide which of Bloom's taxonomy levels were being assessed for that specific assessment. The study found a considerable disagreement between the academics responsible for the modules and the evaluators on the level at which the evaluation was being carried out: the evaluators felt that the vast majority of the assessment was at the application level, while the academics responsible considered that they were also evaluating analysis (there is difficulty in determining the taxonomic level of the assessment without having an intimate knowledge of the way in which the material being evaluated has been taught). It was also found that it is not clear if the two highest levels of Bloom's taxonomy, synthesis and evaluation, should or not be applied: on one hand, there is the opinion that they should not be covered until the last year of the degree program, while for others these levels are suitable because they are of core importance, so they must be taught and evaluated. Similarly, Sanders and Mueller [20] argue that CUs in the early years of the program should focus on reaching the lowest levels of Bloom's taxonomy, leaving the highest levels for final years.
Essi Lahtinen [21] presents a study of 254 undergraduate students of a basic programming course whose performance was measured on different levels of Bloom's Taxonomy and the results of the statistical analysis of clusters that suggest that the groups of students obtained align with Bloom's taxonomy were compiled: underperforming students at lower levels may still perform well at higher levels of taxonomy. Therefore, Lahtinen suggests six groups of students that the teacher should recognize when organizing basic programming courses: Competent students, Practical students, Unprepared students, Theoretical students, Memorizing students and Indifferent students. As an example, the theoretical students performed well on the highest level (evaluation) while having problems with application and synthesis.
Starr and Colleagues [22] used a meta-level structure for Bloom's taxonomy, with differences between producing and explaining at three levels: Beginner, Intermediate and Expert. Recall and Comprehension at the lowest level, Application and Analysis at the intermediate level and Synthesis and Evaluation at the highest level (respectively to produce and explain).
A Bloom rating [23] was created for six courses by Oliver and Colleagues, including Programming 1. This course appears with an evaluation level of 0% but has a high score for synthesis. Interestingly, the knowledge and application levels go from programming courses 1 to programming 3.
Shneider and Gladkikh [24] suggest a generic approach to planning questioning strategies based on application of Bloom's cognitive taxonomy to a variety of different subjects, including Programming with Visual Basic, and define problem models useful at different levels of student assessment. They used a modified taxonomy (MT), changing Remembering to Recall (Re), Understanding to Comprehension (Co), Applying to Application (Ap), Analysing to Analysis (An), Evaluating to Evaluation (Ev) and Creating to Synthesis (Sy). They found it to be a good practice to arrange the learning outcomes in an order corresponding to the levels of the model. Some outcomes would relate to more than one level. As an example, they give a set of learning results using the topic Arrays of the Programming with Visual Basic course that we put in table format (Table II). Several examples of the questioning model for formative assessment were given by the authors. From these examples we remove one from each level of the modified taxonomy (MT) and put it in the following table (Table III). Lister and Leaney [25] use a two-pronged solution: first, different tasks are defined according to the capacity of the students and, in the second part, with differences in the nature of the tasks reflected in different levels of Bloom taxonomy. They define that weaker students are required to demonstrate knowledge and understanding (must be able to write modest but complete programs and to understand the issues of a good program design, but without always making the connection between these problems and the modest programs they write), average students' should exhibit application and analysis level performance at program design and high-level students must have performance at the "synthesis" and "evaluation" levels (conceiving / building their own project, and criticizing other students' projects, being aware of good software design principles).
Howerd and Collegues [26] found Merge and Quick Sorts Lesson Objectives in Terms of Bloom's Taxonomy: 1) The student will know how the merge sort works.
2) The student will know how the quicksort works.
3) The student will comprehend the Big O analysis of merge sort and quicksort. 4) The student will evaluate the five sorting methods covered in Kruse, Chapter 7, for both contiguous and linked lists in terms of Storage Space, Running Time and Programming Effort. Errol Thompson and colleagues [27], despite finding that Bloom's taxonomy is difficult to consistently apply to assessment tasks in introductory programming courses, consider it a valuable tool for analysis and discussion of program evaluation. They provide an interpretation of Bloom's Taxonomy's review for computer science because they feel that it is important for the computer science discipline to look carefully at the cognitive processes that programming requires. Create: Write a method get24HourTime() which accepts three parameters and returns a String. The three parameters are an int representing the hour value, anint representing the minute value and a String which is either "am" or "pm".
Scott [28] gives examples from computer science of each Bloom category:  Name the three kinds of loops found in C++. (Remember)  Give the output of this code that contains a switch statement. ( [22] gave a brief explanation of Bloom's levels, and sample questions for the concept "computer program": 1) Recall: The student is expected to recite memorized information about the concept. "What is a program?" 2) Comprehension: The student is expected to explain the concept in his or her own words. "How is a program similar to a recipe?" 3) Application: The student is expected to apply the concept to a situation. "What is the output of this program?" 4) Analysis: The student is expected to separate materials or concepts into component parts so that their organizational structure may be understood. "Create a top down design for a program to perform a given task." 5) Synthesis The student is expected to put parts together to form a whole, with emphasis on creating a new meaning or structure. "Write a program to perform a given task." 6) Evaluation The student is expected to make judgments about the value of ideas or materials. "Given two programs that perform the same task, which one is better and why?" Some authors use taxonomy with a student-centered perspective. Jacqueline L. Whalley and Colleagues [29] report a study of reading and comprehension skills in novice programmers, developing a set of ten questions within two key pedagogical frameworks: Bloom and SOLO taxonomies. Four questions were Cognitive Process Category Apply (sub-category Executing), four Understand (Comparing) and two Analyze (Differentiating). The study proved to be challenging even for an experienced group of programming educators, suggesting shortcomings in Bloom's taxonomy when applying it to programming problems. They also found as a result that evaluating the programming fairly and consistently is a complex and challenging task, for which programming educators do not have clear structures and tools.
Essi Lahtinen and Tuukka Ahoniemi [30] use each level of Bloom Taxonomy for Visualizations to Support Programming. Diana Cukierman and Donna McGee Thompson [31] report their investigation of the impact of integration instruction of learning strategies within regular laboratory time courses to help students learn. In the initial session, Learning Strategies, and students were introduced to the taxonomy of Bloom's learning levels and demonstrated how this model applies to course topics. Ursula Fuller and Colleagues [32] recommended the use of a matrix that separates the six levels of Bloom into two dimensions, Production (incorporation of applying and creating) and interpretation (incorporating remember, understand, analyze and evaluate). The purpose of the matrix is to identify a variety of different learning trajectories and therefore, guide students on how to improve their skills and understanding.

IV. CONCLUSIONS AND FUTURE WORK
There is a need for tools that help the teacher to clearly define instructional objectives, as well as assessment principles. The language used must be in a way that others understand it, and that it is in accordance with the principles of accreditation of courses (even if these are different in each country and have changed over the years). Bloom's taxonomy seems to be a good alternative to be used.
In this article we study the original and revised Bloom taxonomy. We analyze the studies done in the area of computer science, sub-area of introduction to programming, fundamentals of programming or, as it is widely called, CS1. We found that there are different approaches to taxonomy: while many researchers use the tool in order to clearly define learning objectives, others use it to measure students' knowledge, others to build study materials and assessment tests, while others use taxonomy so that students clearly understand what is intended with the course. There are some differences between the studies, namely regarding the sub-types of students: some define each level of students according to what is defined in Bloom's taxonomy, others find profiles of some that are not consonant with the six categories of the cognitive domain of taxonomy.
As future work we intend to use the topics and learning objectives defined in the introductory units of the ACM / IEEE Computer Science Curriculum recommendation [33] in order to be able to define the students' levels of learning and assessment, while trying to assess what they are and what categories are used in the cognitive domain of Bloom's taxonomy. Although some researchers propose a new and modified taxonomy, it seems to us that Bloom's taxonomy fits what is intended in relation to curricular units of introduction to programming that are the focus of our investigation.
conclusions, having written the entire document.
Copyright © 2021 by the authors. This is an open access article distributed under the Creative Commons Attribution License which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited (CC BY 4.0).
Sóniar Rolland Sobral was born in Porto in 1971. She is a professor at Universidade Portucalense since 1993 and currently she is a researcher at REMIT, research in economics, management, and information technologies. She is an aggregate (Dr. Habil) in information sciences, the doctorate (PhD) in information systems and technologies, the master (MSc) in electrical and computer engineering and degree in management informatics. She has more than 100 scientific publications and her focus is the distance education, serious games, computer programming and higher education policies. She is addicted to sports, and seriously passionate about technology and travel.