Pseudocode and the Novice Computer Programmer
By Gloria F. Creed-Dikeogu, Ottawa University
Encountering Pseudocode: A Narrative of Programming Solutions
A first encounter with Pseudocode, was neither grasped nor understood. It was not until well into Chapter Four of Gaddis' (2016) Starting out with Programming Logic and Design, a textbook, that the researcher really began to comprehend why this Pseudocode course was vital, when adults from other fields or undergraduate students with limited logic and mathematics skills started to learn any programming language.
In Gaddis (2016), Pseudocode as a term is barely defined. Instead Gaddis (2016) simply states that Pseudocode was created to be used by computer programmers as “a tool” to design effective programs and “flowcharts” that then create “models of programs” (p. 27). As a novice computer programmer, I find this definition means very little when programming models and why these must be created at all or how these actually were to work, are far from a commonplace concept or understanding to the novice.
California Polytechnic State University (2003) in its Pseudocode Standard defines Pseudocode as “a kind of structured English for describing algorithms” which “allows the designer to focus on the logic of the algorithm without being distracted by details of the (computer) language syntax” (Para. 1). [The "structured English" enables formal reasoning to be applied to the sequence and the existence of a "model of computation" and computational operations behind the Pseudocode.] The programmer creates a “narrative” of the programming solutions discovered using Pseudocode and follows this up by implementing the algorithm in flowchart format, thereby providing a “rote mechanical translation” of the “source code” (Para. 1). The Pseudocode Standard suggests that all computer programmers should learn to use this standard Pseudocode notation and develop their own “personal style” (Para. 7) of Pseudocode, as the Pseudocode can aid them to meticulously plan out their programming steps, modules, loops and arrays and easily chart their coding solutions.
Figure 1: Main Module of a Program Calculating and Displaying the Percentage of Calories in Food items Written in Pseudocode
Pseudocode is not a course that is implemented by every university in every computer programming department. It is most often added to computer programming courses taught to adult students, both on the ground and online, who are transitioning into the field from other subject specializations. Although Hu’s (2003) study does not specify that Pseudocode be taught to all adult novice learners of any programming course, the case study which focused on teaching computer languages to adult students did suggest that adult novice programmers be taught about computer input, output, and processing; drawing flowcharts, and learning how to debug their own programs. The teaching methods that were described by Hu’s (2003) case study, and that are suggested for use with adults learning programming, are similar to those included in Gaddis (2016) Starting out with Programming Logic and Design, writing a textbook for the purpose of teaching Pseudocode to novice programmers.
Figure 2: Creating a While Loop in Pseudocode
A Challenging Learning Curve
In an article by, Miliszweska & Tan (2007) the attrition amongst first-year computer programming students is discussed. Their findings suggest that the majority of undergraduate students lack the experience, subject-continuity, logic and problem-solving skills required to learn programming languages without having been enrolled in specific courses that prepare them to better grasp the patterns, language syntax and programming concepts that they would encounter during the programming process. Further findings from the Miliszweska & Tan (2007) study indicate that novice programmers learned best when the pedagogy used to teach them included “analogies”, since this was most useful when learning to manipulating arrays; while along the same lines, understanding concept and topic “relevance” allowed novice programmers to “see the purpose in what they are” actually “learning” (Miliszweska & Tan (2007, p.280) thus, making their own learning experiences more relevant and rich.
This researcher had a similar experience as the undergraduate students described by Miliszweska & Tan (2007) in their article on the attrition of computer programming students, having had little high school preparation for the logic, problem-solving, and syntactical complexities of Pascal and COBOL programming languages back in the 1980’s when programs were written on a set of cards, and each syntax error stopped program execution in mid-stream. The result was moving away from learning anymore computer languages, as Miliszweska & Tan (2007) students did, into another field. Revisiting this aborted pursuit as an adult student, it is hoped, that armed with additional mathematical and logic skills, that this course in Pseudocode has already started to set a firm foundation, which was initially missed, for building the necessary skills for learning computer languages with greater ease.
Giordano & Carlisle (2006)’s study suggests that the novice programmer’s learning experience and engagement can be improved with a pedagogy introduced into computer programming curricula that is focused on “algorithm visualization” (p.1). Giordano & Carlisle (2006) used a “commercial-off-the-shelf diagramming tool” as “a primary aid” to program design and flowchart construction with novice programming students in their classes. However, they discovered that students found this tool difficult to manipulate and at the same time, instructors were unable to find spaces on the diagram where they could provide students with constructive feedback. Giordano & Carlisle (2006) researched the use of many other algorithm visualization tools such as Alice, the Structured Flow Chart Editor and ALVIS Live and decided at best to adopt RAPTOR, “a visualization programming environment that unifies syntax and symbology”, requiring “syntactical entries into flowcharting symbols” and preventing “students from creating syntactically incorrect flowcharts”(p.3). Giordano & Carlisle (2006) conducted a pilot study with 41 student respondents to assess and evaluate RAPTOR’s effectiveness as a flowcharting tool and compare it with COTS, the original commercial-off-the-shelf diagramming tool offered for use in the class where students completed sequencing, selection, and iteration Java programing assignments. The students were divided into RAPTOR treatment and COTS control groups. Only one student out of 41 students in both groups preferred COTS to RAPTOR. When the final examination was administered, students in the RAPTOR treatment group performed significantly better on average on the Flowchart (91%), Java I (98%), Java II (95%), Course Baseline (74%) than those did in the COTS Control group on the Flowchart(85%), Java I (97%), Java II (87%) and Course Baseline(83%). The researchers suggested, following their study that other programs working with novice programmers consider introducing RAPTOR or similar visualization programs to their courses to “enhance text-based programming” in future developers (Giordano & Carlisle, 2006, p. 5).
Moving in the direction suggested by Giordano & Carlisle (2006), by teaching with animated visualization, Hatziapostolou & Paraskakis (2008)'s study described how adult programming students online were being taught quite effectively by constructing course software that created code pop-up boxes, which explained code fragments. Students encountering computer-related terms they did not understand were also able to mouse over explanations of these concepts and jargon. Students were also able to view the algorithms being learned by clicking on them. Animated viewing options were provided and with a mouse-click they were able to view flowcharts and Pseudocode connected with the algorithm. Students completed practical programming exercises based on real-world scenarios and interactive quizzes that offered them immediate constructive criticism to help them improve their understanding of the major concepts.
Pseudocode allows you to translate your statements into any language because there are no special commands and it is not standardized. Writing out programs before you code can enable you to better organize and see where you may have left out needed parts in your programs (Study.com, 2017).
Writing Pseudocode opens the mind of the learner to the format in which a computer program is written. It teaches the learner the structural conventions of computer languages and aids them to formalize complex concepts such as drawing flowcharts and understanding how each section is connected. The learner discovers how to create different types of loops and arrays and better understand how and why these are used and how the arguments in a main program or a module follow one another. At the same time, the learner is introduced to important theoretical concepts surrounding programming, and to how specific coding actions are defined and described, and mapped to a flowchart where connections are made that describe each module, each function and the loops are connected back into the main module of the program.
Figure 3: A Simple Flowchart Explaining Main Module Written in Pseudocode
California Polytechnic State University. CalPoly Computer Science Department. (2003). Pseudocode Standard. Retrieved from University http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html
Gaddis, (2016). Starting out with Programming Logic and Design. 4th Edition. Boston: Pearson.
Giordano, J.C & Carlisle, M. (October 19-21, 2006). Toward a more effective visualization toll to teach novice programmers. Proceedings of SIGITE 2006, Minneapolis, Minnesota. Retrieved from https://dl.acm.org/citation.cfm?id=1168841
Hatziapostolou, T. & Paraskakis, I. (2008). Pedagogical considerations in coursework development: Supporting school comeback. Proceedings of the Informatics Education Europe II Conference. South-East European Research Center, p.266-274. Retrieved from https://s3.amazonaws.com/academia.edu.documents/38827675/p266-274.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1509488326&Signature=hpBBBOnfULokk39Ho07ITD8Skx4%3D&response-content-disposition=inline%3B%20filename%3DPedagogical_Considerations_in_Courseware.pdf
Hu, M.(2003, July). A case study in teaching adult students computer programming. Proceedings of the 16th Annual NAACQ, Palmeston, New Zealand. Retrieved from http://www.citrenz.ac.nz/conferences/2003/papers/287.pdf.
Miliszweska, I. & Tan, G. (2007) Befriending computer programming: a proposed approach to teaching introductory programming In Cohen, E.H.(ed.). (2007). Information and beyond: issues in informing science and information technology. Journal of Issues in Information Science and Information Technology, Part I, v. 4, 271-289.
Study.com. (2017). Pseudocode definition & examples. Retrieved from http://study.com/academy/lesson/pseudocode-definition-examples-quiz.html
About the Author
|Previous page on path||Cover, page 7 of 26||Next page on path|