0% found this document useful (0 votes)
71 views5 pages

Bloom's Taxonomy Based Approach To Learn Basic Programming Loops

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views5 pages

Bloom's Taxonomy Based Approach To Learn Basic Programming Loops

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Bloom’s Taxonomy Based Approach to Learn Basic

Programming Loops
Anabela Gomes Fernanda Brito Correia
Informatics Engineering Department Informatics Engineering Department
Coimbra Polytechnic - ISEC Coimbra Polytechnic - ISEC
Centre for Informatics and Systems Coimbra, Portugal
University of Coimbra Institute of Electronics and Informatics Engineering of Aveiro
Coimbra, Portugal University of Aveiro
anabela@isec.pt Aveiro, Portugal
fernanda@isec.pt

Abstract— This Research to Practice Full Paper presents a Many solutions have been proposed in the literature and,
study on the difficulties 46 Biomedical Engineering students show although many of them may give very important contributes to
in a particular topic of the first programming course, the loop the resolution of this issue, in general, the problem remains [10-
topic. Students' results in programming courses are often very 19]. We believe, that to modify the current picture in
disappointing and to improve these results it is fundamental to introductory programming courses it is necessary to improve
understand the type of difficulties students feel when they are several areas, such as, student motivation, attitudes and study
leaning how to program. Most of the researches are too generic and teaching methodologies. However, first of all, it is
and do not report on specific programming topics and we consider fundamental to understand the type of students programming
important to be more specific. To achieve this purpose we
difficulties. Some observations and studies about the main errors
organized a test, using the revised Bloom's Taxonomy, where all of
made by students when they start programing, whether during
the questions were about the programming loop topic. We did a
statistical analysis based on the grades students obtained on each the class, the exams or other types of environments were already
question of the test and we concluded that the approach we made [20]. Different approaches and tools have been proposed
followed has clear pedagogical advantages to weaker students, to help students and teachers reach their objectives, but most of
making them more confident and motivated and allows teachers to the researches are too generic and do not report on specific
use adequate strategies to each of the identified students’ programming topics. We consider it is important to be more
difficulties. The authors propose, in the next future, a set of visual specific and report about specific programming topics, through
methodologies to be used with the students, which they expect can more deep studies and analyzes of the themes in which the
contribute to delineate a more motivating teaching strategy in students have more difficulties and of the way to surpass them
overcoming students’ difficulties. and propose specific pedagogical activities for each of them.

Keywords — Bloom’s Taxonomy, Computer Science Many times, programming teachers ask students to develop
Education, Programming Teaching Strategies complete programs beginning in the early stages of the course.
Normally, simple programs are asked in early stages, and
problem complexity grows as the course develops. We believe
I. INTRODUCTION that this strategy may be inadequate for many students,
Learning computer programming is a difficult process for especially those that can’t create programming solutions even to
many students worldwide. The literature includes many simple problems. That means that the complexity is too high for
descriptions of failure cases all over the world, independent of these students right from the beginning, leading to frustration,
programming languages or paradigms used [1]. Some authors lack of motivation and failure. At the same time, this approach,
have discussed different reasons for such problems [2-6]. We makes it difficult for teachers to clearly identify the type of
also think that there are several reasons that cause these students’ difficulties. As mentioned in [21], “students should
difficulties and could be pointed out, like teaching methods, first be taught to read programs before they write programs. As
study methods, student’s abilities and attitudes, the nature of children, in our early school years, the ability to read and
programming, the type of students’ motivation and also the understand our native language outstripped our capacity to write
strategies used by the teachers [7]. In previous researches we fragments of that language”.
investigated the impact that some personal characteristics may In this paper, we describe a study done on the introductory
have had in the performance of learning to program [8, 9]. programming course of the 1st year and 1st semester of
However, previous programming experience showed an Biomedical Engineering degree of our institution, the
important factor influencing the results in learning how to Informatics and Systems Department (DEIS) from the
program, even when using a different language or paradigm. Engineering Institute of Coimbra (ISEC) of the Polytechnic
This is not surprising, as we believe that general programming Institute of Coimbra (IPC). This course uses as introductory
abilities are far more important than language specific details language the C language and the subjects covered include the
and that it takes time to train and mature the acquired knowledge. basic concepts taught in an introductory programming course

978-1-5386-1174-6/18/$31.00 ©2018 IEEE


using a procedural programming language, like data types, Bloom’s taxonomy has been revised [25]. The authors
operators and expressions, standard input and output formatted changed the nouns listed in Bloom’s model into verbs, to
data, data structures, loops, functions, arrays and string correspond to the way learning objectives are typically described
manipulation. In the first three weeks, the students solve (see Table 1).
programming problems using sequential, selection and repetitive
structures through pseudocode. Only after a certain TABLE 1. REVISED BLOOM’S TAXONOMY
comprehension of the subject the problems are solved using the
C language giving emphasis to the syntax details. This course Categories Cognitive Processes
has 4 contact hours per week, 1 hour of theoretic class and 3 “Remember” Recognizing, Recalling
hours of lab classes in two groups of about 30 students each. In
“Understand” Interpreting, Exemplifying, Classifying,
addition, teachers offer more 6 hours per week to clarify Summarizing, Inferring, Comparing, Explaining
students’ doubts, during the entire semester.
“Apply” Executing, Implementing
The observed problems, collected during the classes and also
by analyzing the tests and exams, indicated to us that the great “Analyse” Differentiating, Organizing, Attributing
difficulties begin with loops. Hence, in this study, we “Evaluate” Checking, Critiquing
concentrated on analyzing this topic. A taxonomy of educational Generating, Planning, Producing
“Create”
objectives, such as revised Bloom's Taxonomy of Educational
Objectives, can be a good reference to understand this question,
since it is divided in levels that can be translated to an assessment
of increasing complexity level. We think that before students Fuller and colleagues made a revision about existing
write complete programs they should master easier tasks that can taxonomies, stressing the strengths and weaknesses of each one.
be related with the first and intermediate levels of the Bloom's They also proposed a new taxonomy and discussed how this can
Taxonomy. be used in application-oriented courses such as programming
[21].
We agreed that the different activities and problems
proposed to students during the classes should follow an Although we find several positive aspects in the approaches
increasing level of difficulty, but the entry level should be easy followed in different taxonomies, we agree with Raymond Lister
enough, so that most students can have success in the early when he says that “specific to the teaching of elementary
learning activities and feel motivated, so we organized a test programming: the lower two levels should emphasize the skill of
about the programming topic looping (all of the questions were reading and comprehending code, the intermediate two levels
about this topic) in terms of the Bloom’s Taxonomy followed by should emphasize the writing of small fragments of code, but
a statistical analyses of the results to make conclusions about the within a well-defined context, and the upper two levels should
pedagogical advantages of this approach. emphasize the writing of complete non-trivial programs” and
that “students should first be taught to read programs before they
write programs” [21]. We chose to develop this study based on
II. TAXONOMIES OF LEARNING the revised Bloom’s Taxonomy.
Taxonomies of educational objectives are used worldwide to
describe learning outcomes and the assessment results, reflecting III. THE STUDY
a student learning stage. Usually they divide educational
objectives into three domains: cognitive, affective and A total of 46 students (16 male and 30 female) appeared for
psychomotor. As described in [22], some, such as Bloom’s the test we structured based on the Bloom’s taxonomy. The
taxonomy, treat each of these as a one-dimensional continuum, number of freshmen students was 36 (11 male and 25 female).
others, like the revised Bloom’s taxonomy describe the cognitive For the purpose of our study we considered only freshmen, as
domain using a matrix. Yet others, like the SOLO taxonomy we wanted to consider only students who were in the same
[23], use a set of categories that describe a mixture of circumstances when the course started.
quantitative and qualitative differences between student We structured the test (2nd test), according to the Bloom’s
performances. There are also taxonomies that use all three taxonomy. That is, instead of asking students to write complete
domains equally. Existing researches on the use of learning programs (as was usual before), we structured the test in the
taxonomies in computer science focuses mainly on the cognitive following 6 questions (Q1 to Q6) and, to analyse student
domain and among the diverse taxonomies proposed in the performance, we considered any answer to each question with a
literature, a very well-known taxonomy is the original Bloom’s positive grade if it had a grade superior or equal to 50%.
taxonomy [24]. It is a classification of the different objectives
and skills that educators set for students, where the skills in the The statistical results, calculated in percentage for each of
cognitive domain are divided in six levels. Starting from the the questions, were the minimum value (Min), the maximum
lowest order processes to the highest, those levels are: value (Max), the average (Average), the standard deviation (Std.
“Knowledge”, “Comprehension”, “Application”, “Analysis”, Dev.) and the median (Median) and can be found in Table 2 and
“Synthesis” and “Evaluation”. Higher levels are built on lower in the bar graph of the Fig. 1 can be visualized the respective
ones and are considered more complex and closer to complete average with standard deviation and the median values.
mastery of a subject matter. TABLE 2. STATISTIC RESULTS OF THE QUESTIONS 1 TO 6
Level Min Max Average
Std.
Median output would be generated. This question, consisted in the
Dev. creation of a visual pattern, triangle shaped, implying loops
Q1 - Remember 0.0% 100.0% 64.3% 48.5% 100.0% inside loops. For such, it was provided to the student, several
Q2 - Understand 0.0% 100.0% 66.8% 31.0% 75.0% similar outputs, but with differences to reveal the true
understanding of the subject. Since only one response was
Q3 - Apply 5.0% 100.0% 42.9% 27.9% 40.0% correct, it was assigned 100% to the selection of the correct code
Q4 - Analyse 0.0% 100.0% 18.2% 39.0% 0.0% and 0% to the wrong(s) answer(s). The decrease in the students’
grades showed that only the best students were able to deal with
Q5 - Evaluate 0.0% 100.0% 30.0% 29.0% 25.0%
the difficulty of this question. Notice that only 8 students
Q6 - Create 0.0% 100.0% 28.7% 25.9% 22.5% achieved 100%, for having the correct code.
e) In question 5 (Q5), classified in the Evaluation level
a) The first question (Q1) was a question belonging to the (“Evaluate”), the students had to assess code, justifying which of
Knowledge level (“Remember”). This question consisted of a the 2 programs presented were more efficient to read 5 integer
code statement for students to assess the need for a loop. This numbers and present the sum of positive numbers. The code,
code statement asked the user his/her age that would be valid although had no chained loops, included a set of more elaborate
only when the value entered was positive. Although this is a very code, considered by teachers as being more difficult to
simple question, it refers to an error that occurs very frequently, understand by students, like the inclusion of break and continue
when students cannot distinguish between a selection and a loop. statements inside loops. Two very similar codes were provided,
Thus, the large amount of wrong answers was because students although only one was correct. There were few students that
solved the question using a selection. Students forgot that a user could do this identification and the level of justification was
may, more than once, enter an incorrect value (outside the generally very poor, which revealed other weaknesses in
expected range). The results obtained for this question were 0% reasoning and corresponding code translation.
and 100%, having fifteen 0% and twenty-seven 100%.
Therefore, most students had satisfactory results in this question. f) At last (Q6), it was asked the student to create a program,
much more complex, consisting in the generation of a graphic
b) The second question (Q2), classified in the pattern that seemed a diamond, using a character requested to the
Comprehension level of Bloom (“Understand”), consisted of a user. This question, located at the highest level of Bloom's
multiple response question. The students should point out, Taxonomy, the Creation level (“Create”), included a complex
circling the corresponding answer, which of the codes, printed use of chained loops. To note that only 1 student got the answer
in each line the double of each of the first “n” user-entered completely correct, with 8 students with grade 0%. The average
numbers, followed by a "*" on the next line. Options coded with grade obtained to this question was quite negative.
various for loops and while loops were given to students and to
minimize the chances of “guessing” by the students, wrong Even though these questions were all easy, we noticed a
answers were penalized. The results obtained can be found in decrease in the percentage of satisfactory answers from question
Table 2. Notice that only 8 students achieved 100%, having all 1 to question 6, which can be associated to a slight increase of
code correct and not selecting any wrong option. Although the difficulty and the need to produce more coding.
marks obtained in the answers to this question were high, we
expected to obtain better results, since it corresponded to the
basic understanding of the functioning of the loop. Average Median
120%
c) The third question (Q3) belonged to the Application level
(“Apply”), in which the students were asked to write a C 100%

program that receives an integer between 100 and 200 and 80%
presents the sum of its divisors. The student was also asked to
make the program in a way requiring the user to enter a number 60%

in a specified range and to give an output similar to a given


40%
example. In this question, it was observed an abrupt decrease of
the grades compared to the previous question. We think that this 20%
decrease is related to the fact that students have to write code.
We want to highlight the fact that only 1 student obtained 100%, 0%

corresponding to a completely correct code. The difference in -20%


results obtained between the answers to this question and the
previous question clearly reveals that there is a difference
between the competence of undestanding code and the ability to
produce code. Students who can interpret programs may not
necessarily be able to write their own programs, being code
interpretation and code writing two different aptitudes.
Fig. 1. Graph of the average, standard deviation and median values of the
d) In the fourth question (Q4), at the Analysis level questions 1 to 6
(“Analyse”), it was given to the student a set of lines of code that
the student had to examine in order to be able to decide which
IV. DISCUSSION (not complete programs), continuing gradually towards more
The universal problems associated with programming difficult ones.
education in many higher education institutions leading to high It should be noted that the proposed strategy is to be applied
failure levels are well known. Our institution, is not an to the teaching of fundamental topics. We consider that students,
exception. From 2011/2012 academic years on, we have been to pass in an introductory programming course, must be able to
teaching an introductory programming course and we have been develop complete programs and not only be able to read and
more attentive to the type of students’ difficulties and errors they interpret individual code fragments, so exams and other
make when programming. We have been gathering these types assessment methods should in the first place test this
of problems and collected them during classes and exams. The competence. However, we think that the proposed approach
classes’ interactions with students enabled us to easily predict could be used in classes, intermediate formative tests and in
the success of students in introductory programming courses as some parts of exams, since it helps the identification of
well as the type of main topics where the principal problems difficulties of a topic at various stages, while motivating students
happened. For our students the most problematic aspects are the to learn more about that particular topic.
chained loops and the functions. As chained loops are taught
first, we decided to primarily concentrate on this topic. For that, Finally, we consider that the approach we followed has clear
we decided to make a test only about the loops topic, where each pedagogical advantages to weaker students. They can become
question could be classified as belonging to each level of the more confident and motivated. For teachers it is easier to identify
revised Bloom’s Taxonomy. We wanted to find out in what each student’s doubts and misconceptions and to help them to
Blooms level the students had more difficulties. overcome those difficulties. Students’ specific difficulties are
more complicated to identify when they are asked to write
This is quite different from an approach where most activities complete programs due to the multiple concepts associated to
ask students to develop complete programs that solve some this task.
proposed problem. Many students are not able to create those
programs, which will install a feeling of inability, often leading
V. CONCLUSIONS
to a lack of motivation and abandonment (typically
programming courses have high abandon rates when compared It is known that programming learning is complex to many
with other courses). The approach we used, included low students. In the past we studied different factors that could
difficulty level activities, which gave weaker students a sense contribute to this problem and several general causes were
that they were able to do some activities correctly. This had some already identified. In this paper, we analyzed the specific types
positive impact in the course. Many students commented that of students misunderstanding about loops, organizing a test with
they were more motivated with this approach. They felt able to all question about this topic according to an increasing difficulty
understand some programming and to answer correctly to some level following the revised Bloom’s Taxonomy.
questions, thus giving them some sense of confidence. Even Although the final results were similar to those obtained in
though the progress was slow paced, the students felt more previous years, we noticed that the advantages of this
confident and able to learn (some) programming. Students also methodology are twofold. In one hand, it caused an increase of
commented that they become aware that learning to program is motivation and confidence, especially among weaker students
a process consisting of different stages and not a unique stage and in another hand, this approach facilitates the detection of
that is impossible to reach. They understood that it is a process students’ difficulties by the teacher, which allow him to use
that takes time and requires a lot of effort and intensive study strategies to attack each of the identified weaknesses. We believe
methods in order to obtain positive results. that more time is necessary for weaker students to develop the
The results obtained, and their analysis showed us that even necessary skills to be successful in the course as in fact, the final
though it seems that students completely understand a loop when objective remains, being students to be able to develop programs
it is isolated, chained loops make the comprehension very to solve specific problems.
difficult for them, causing students not to fully understand the Our future plan is the application of the proposed
interaction between the various variables in each of the loops, as methodology in another topic. Although we defend the
well as all the interaction mechanisms between all of them. We traditional method to assess students, we agree that teachers can
also verified that the problem is much more complicated when, contribute to an improvement of the students learning. This can
instead of using while loops, for loops are used. We think that be done through the use of some taxonomy as reference for
the problem is due to the fact that the for loop can have a more guiding the type of activities to be done in classroom, mainly to
compact visual representation, while in the while loop the visual help teachers to detect students’ difficulties. Teachers will be
representation is more elucidative of the dynamics involved. able to better diagnosis the students’ difficulties and better guide
We believe that not all students can become brilliant them with suitable activities. The idea of this approach is also to
programmers, but we also agree that to be successful in a define new pedagogical strategies, which, after being tested by
programming course, students should be able to build programs students and teachers, can be followed in order to improve the
with some complexity. To reach this stage, takes time and, at process of programming teaching and learning.
each learning stage, teachers should take into consideration what Several authors had developed several types of tools to assist
the students know and don´t know. To the majority of students, the teaching/learning of initial programming having in mind
learning should be progressive, starting with simpler questions different approaches. However, it seems that these approaches
don’t contribute to some extent, to a full comprehension of all of
the programming topics. Therefore, we are planning a set of [10] R. Pattis, Karel the Robot: A Gentle Introduction to the Art of
visual methodologies (static and dynamic) in order to test which Programming. John Wiley & Sons, 1981.
ones leads to a better understanding of programming topics. We [11] D. Arnow and O. Barshay, “WebToTeach: An Interactive Focused
want to test them with students and we also want to have the Programming Exercise System,” in Proceedings of the 29th ASEE/IEEE
contribution of a set of trained programming teachers. At the Frontiers in Education Conference, San Juan, Puerto Rico, 1999, pp. 39-
44.
same time, we are not only interested to see which ones leads to
a better understanding but also, which specific strategies [12] T. Naps, J. Eagan and L. Norton, “JHAVÉ – An Environment to Actively
contributes to a better engagement of the students with those Engage Students in Web-based Algorithm Visualizations,” in
particular topics. The idea would be to achieve a simultaneously Proceedings of the 31st SIGCSE Technical Symposium on Computer
Science Education, 2000, pp. 109-113.
more profitable and motivating strategy. This idea is currently
being developed and the tests being planned. [13] E. Roberts, “An overview of MiniJava,” in Proceedings of the 32nd
SIGCSE Technical Symposium on Computer Science Education
We expect that our study can contribute to a valuable (SIGCSE’01), Charlotte, USA, 2001.
discussion about the impact of this approach in improving the
[14] “Scratch” [Online). Available: http://scratch.mit.edu/. [Accessed January
students’ learning process and the teaching methods used with 2017].
them, by finding adequate strategies and types of activities that
motivate the students in their process of learning. Additionally, [15] M. Ben-Ari, N. Myller, E. Sutinen, and J. Tarhio, “Perspectives on Program
Animation with Jeliot,” Lecture Notes in Computer Science, 2269,
we consider that it could be interesting to apply it in similar Springer-Verlag, pp. 31-45, 2002.
courses.
[16] M. Kolling, B. Quig, A. Patterson and J. Rosenberg, “The BlueJ system
and its pedagogy,” Journal of Computing Science Education, Special
REFERENCES Issue of Learning and Teaching Object Technology, vol. 12, no. 4, pp.
[1] C. Watson, and F. W. Li, “Failure Rates in Introductory Programming 249-268, 2003.
Revisited,” in Proceedings of the Innovation and Technology in [17] T. Rajala, M.-J. Laakso, E. Kaila and T. Salakoski, “VILLE: a language-
Computer Science Education Conference (ITiCSE2014), Uppsala, independent program visualization tool,” in Proceedings of the Seventh
Sweden, ACM, 2014. Baltic Sea Conference on Computing Education Research (Koli Calling
[2] K. D. Sloane, and M. C. Linn, “Instructional Conditions in Pascal '07), vol. 88. Australian Computer Society, Inc., Darlinghurst, Australia,
Programming Classes,” in Teaching and learning computer Australia, 2007, pp. 151-159.
programming, R. E. Mayer, Ed. Hillsdale, New Jersey, Lawrence [18] A. Santos, A. Gomes and A. J. Mendes, “Integrating New Technologies
Erlbaum Associates, 1988, pp.137-152. and Existing Tools to Promote Programming Learning,” Algorithms, vol.
[3] E. Soloway, and J. Spohrer, J. Studying the Novice Programmer. Hillsdale, 3, no, 2, pp. 183-196, 2010.
New Jersey :Lawrence Erlbaum Associates, , 1989. [19] M. Ben-Ari, R. Bednarik, R., Levy, G., Ebel, A. Moreno, N. Myller, and
[4] T. Jenkins, “On the difficulty of learning to program,” in Proceedings of E. Sutinen, “A decade of research and development on
the 3rd Annual LTSN_ICS Conference (Loughborough University, program animation: The Jeliot experience,” Journal of Visual Languages
United Kingdom, August 27-29, 2002), The Higher Education Academy, & Computing, vol. 22, no. 5, pp. 375-384, 2011.
2002, pp. 53-58. [20] A. Gomes, and F. B. Correia, “Errors to avoid in Programming Teaching
[5] E. Lahtinen, K. Ala-Mutka, and H-M Järvinen, H-M., "A study of and Learning,” In Proceedings of 7th International Conference of
difficulties of novice programmers," in Proceedings of the 10th Annual Education, Research and Innovation – ICERI’14 (Seville, Spain, 2014).
SIGCSE Conference on Innovation and Technology in Computer Science [21] R. Lister, “On Blooming First Year Programming, and its Blooming
Education (Monte de Caparica, Portugal, June 27-29, 2005), ACM New Assessment,” in Proceedings of Australasian Conference on Computing
York, NY, USA, 2005, pp. 14-18. Education, Melbourne, Australia, ACM Press, New York, 2000, pp. 158-
[6] W. D. Gray, N. C. Goldberg, and S. A. Byrnes, “Novices and 162.
programming: Merely a difficult subject (why?) or a means to mastering [22] U. Fuller, C. Johnson, T. Ahoniemi, D. Cukierman, I., Hernán-Losada, J.
metacognitive skills?,” Journal of Educational Research on Computers, Jackova, E. Lathinen, T. Lewis, D. M. Thompson, C. Riedesel, and E.
vol. 9, no. 1, pp. 131-140, 2007. Thompson, “Developing a Computer Science-specific learning
[7] A. Gomes, and Mendes, A. J., “Learning to program – difficulties and Taxonomy,” ACM SIGCSE Bulletin, vol. 39, no. 4, pp. 152-170, 2007.
solutions.,” in Proceedings of the International Conference on [23] J. B. Biggs, and K. F. Collis, K.F., Evaluating the quality of learning: The
Engineering Education, Coimbra, Portugal, 2007. SOLO taxonomy (Structure of the Observed Learning Outcome. New
[8] A. Gomes, A. Santos, A., and A. J. Mendes, “A study on students’ York, NY: Academic Press, 1982.
behaviors and attitudes towards learning to program,” in Proceedings of [24] Bloom, B.S., Engelhart, M.D., Furst, E.J., Hill, W.H. & Krathwohl, D.R.
the 17th ACM Annual Conference on Innovation and Technology in (1956). Taxonomy of Educational Objectives: Handbook 1 Cognitive
Computer Science Education – ITiCSE2012 (Haifa, Israel, 2012), ACM Domain. Longmans, Green and Co Ltd, London.
Press, NY, USA, doi:10.1145/2325296.2325331.
[25] L. W. Anderson, D. R. Krathwohl, P. W. Airasian, K. A. Cruikshank, R.
[9] A. Gomes, W. Ke,, M. J. Marcelino, S. Lm, S Siu, and A. J. Mendes, “A E. Mayer, P. R. Pintrich, J. Raths, and M. C.Wittrock, A taxonomy for
Teacher's view about introductory programming teaching and learning – learning and teaching and assessing: A revision of Bloom's taxonomy of
Portuguese and Macanese perspectives,” in Proceedings of 45th educational objectives. New York, NY: Addison Wesley Longman, Inc.,
ASEE/IEEE Frontiers in Education 2017 - FIE’17 (Indianápolis, 2001.
Indiana, USA, 2017).

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy