**Curriculum Development for High School Students Studying Computer Science**

**A thought experiment**

**Abstract**

In this article I suggest relevant learning goals for understanding introductory computer science, and subsequently propose a description of appropriate curriculum for high school students given an hour, a week, and a month to learn the material. Retention of the the learning goals is measured in a following assessment (not discussed herein) three years later. The curriculum is structured as a bottom-up funnel, with the core tenants of computer science taught in an analogy driven way to the students given an hour, adding more practical, abstracted, and transferable knowledge to the curriculum for the students with a more substantive period of time.

**Context**

Computer science differs from the generalised natural sciences currently taught — Biology, Chemistry, Physics, etc — in that natural sciences seek to describe concrete natural phenomenon through abstract symbolisms that compose together to build a mental model of the world and beyond. Contrastingly Computer Science seeks to take a query or problem and through abstract reasoning, a combination of algorithmic processes, and problem solving approaches, determines the *process* of solving the problem such that by writing using a specific syntax, a computer can execute those steps till a solution.

**Learning Goals**

I decided on a series of learning goals for my students based on my experiences as an undergraduate studying Computer Science, as well as my recent involvement as a researcher developing experimental curriculum and a guidance system for an Introduction to Computer Science course offered at UC Berkeley.

These four goals, designed to be four critical components of Computer Science education will be presented to students in a sequential form, with each subsequent module building upon the prior knowledge of the previously developed mental models, starting with an assumed baseline. This approach follows closely with the notions of constructivism and starts by giving students a breadth first explanation of topics, explicating the relationship between the high level components ofComputer Science, followed by practical in-depth lessons that focus more on developing a complex and deeper understanding of the tenets for longer term students. Each of the following goals are followed by an explanation of the criterion that determines a successful development towards that goal.

**1. Students can explain the process of dividing complex problems into smaller, simpler problems.**

*An adequate understanding of top-down and bottom-up aspects of problem solving in Computer Science. Specifically they are the decomposition of higher order abstract problems into smaller subproblems (top down) that are solved through a recursive process (further fragmentation of increasingly easier subproblems), which can be identified as the proper solution to a particular subproblem and then composed together to solve the original problem (bottom-up).*

**2. Students can explain and/or apply appropriate procedures (algorithms) in their problem solving.**

*An adequate understanding of converting subproblems into solutions that are structurally mapped to specific approaches and techniques of problems, called algorithms, such that tractable problems can be efficiently interpreted by a computer. Consequently this module also address the limitations of computation. The development of these solutions are through a highly descriptive and human readable form of programming syntax called pseudocode.*

**3. Students can determine the benefits and tradeoffs of specific types of data structures.**

*An adequate understanding of the core structures and representations of data, such that students can identify the benefits, drawbacks, uses, and restrictions of particular data structures.*

**4. Students have familiarity converting pseudocode solutions into a language specific syntax.**

*A familiarity with a particular programming language (like Python, Java) that would allow students to relay their pseudocode solutions to their problems into language specific syntax.*

**Curriculum : One Hour**

Given the constraints of an hour long to teach my students, the curriculum relies on preexisting knowledge the students have about processes they have likely seen or performed. This approach takes advantage of structure-mapping theory, specifically the concept of *abstraction* — “analogical comparison reveals common structure” (Gentner, 763), allowing students to gain a fundamental understanding of the epistemology of Computer Science in the context of a familiar subject. This in turn prepares these students for future opportunities to delve into the subject matter.

Given these four learning goals, the curriculum can give a high level mapping of individual aspects of computer science problem solving and their relation to each other. Framing it in the context of baking facilitates this purpose, as Gentner proposes that “an important implication…is that the simple act of comparing two things promotes a structural alignment that renders the common structure more salient” (Gentner, 757). In this “baking” analogy, we would discuss the high level problem of constructing a cake. Aligning with the first goal, we can divide the process of making this cake into specific subproblems, such as *procuring the ingredients*, *measuring out each ingredient*, *combining the ingredients in a specific order*, and finally *baking the ingredients*. We can relay how each subproblem can be divided further into sub-subproblems such as *taking out a certain amount of flour*, or *mixing the butter and the sugar*. This can be compared to the process of counting the prime numbers upto a certain number, which in itself is divided into composable subprocesses — *generating numbers*, *identifying primes*, *counting the primes.*

We can then relate the second goal to the analogy by explaining how particular processes, such as *mixing a set of ingredients* or *pouring the batter into a cake tin* can be understood as part of a step-by-step process (an algorithm). Understanding which technique to use (mixing, pouring, etc) allows students to associate a solution to each subproblem. From the third goal, we can relate how selecting a particular utensil or container has a appropriate applicative context, such as using a whisk for mixing eggs (allow air to fluff them up) which can be misapplied to context where a whisk does a poor job, such as combining solid ingredients together (where a spatula would be more appropriate). This can also be related to the container of choice, a baking sheet may be a fantastic choice for cookies, but a more fluid cake batter relies on a deeper choice of container, such as a tin, much like a more ideal data structure for storing prime numbers would be a set, not so much a queue. Finally we can show how these abstract processes of making a cake can actually relate to specific implementations, the fourth goal, such as baking a 12" Chocolate Cake, which requires a particular number of eggs (three), specialized ingredients (chocolate chips), a particular baking temperature (350 degrees F), and a specialized container (12" cake tin). This would correlate to the language specific context of solving a particular problem — the student understands the necessity of knowing the constraints and syntax of their language, environment, and desired outcome.

**Curriculum : One Week**

Building upon the curriculum designed for the one hour students, I focus on developing a deeper understanding of the conceptual framework offered by the learning goals. Specifically developing the hobbyist model that Hmelo-Silver offers in his studies of novices vs. experts wherein he says, “the hobbyist provided more focused, local explanations concerning the relationships between and among structures and their associated functions and behaviors.” (Hmelo-Silver, 134).

The curriculum is designed to develop multimodal models such as the ones discussed by Harrison & Treagust, devising analogical models (such as the cake analogy or relaying dictionary data structure to a physical dictionary) and theoretical models (imagining the environmental context during a function execution) since “…students preferred models that are both discrete and concrete”(Harrison & Treagust, 509). This would allow the students to develop complex connections between problem decomposition, algorithms, data structures, and programming. After spending the first day analysing the role each aspect of the learning goals play in CS, we can proceed to spend the subsequent four days focused on the individual aspects of the learning goals, relating the concepts students have learned with how the world works around them (real world algorithms). For example, (1) understanding how to solve a maze by solving smaller mazes, (2) how navigation system use a very simple graph traversal to decide on a route, (3) how often an binary search is used in common task (looking for a word in a dictionary), to (4) writing a simple calculator application in Python to simulate a schooling calculator. Each day module would contain a few of “What would you do in *x* situation”, where *x* is a situation the student encountered on that or previous days relying onself-explanation to have students solidify their understanding of the concepts by personally explaining the concepts, which would increase their retention (Rittle-Johnson).

**Curriculum : One Month**

Given a month, I can develop the students understanding of the learning goals from a superficial and derivative one to a deeper, more involved process that emphasizes hands-on doing with understanding. This will allow students to be better prepared for future learning (PFL). Since “most people have difficulty applying their knowledge in order to solve new problems…applicative knowing” (Bransford & Schwartz, 66)” focusing on tasks and projects that encourage hands-on doing [vs.] those that encourage doing with understanding…[creates] a knowledge-centered environment” (Donovan et al, 20) that facilitates learning and retention. Like Alan Schoenfeld’s TRU framework, the curriculum develops a productive pattern of thinking rather than prescribing memorization in program development, allowing students to focus on developing **intuition**.

Activities would involve creating more structured projects with tiered layers of an application such that student can incorporate the topics discussed in a lecture as they progress through the month into their projects, understanding the optimizations made (similar to how the study of integration in calculus follows learning about bars under a curve). Students could develop a simple Plants vs. Zombies style game, learning to decompose the problems in the game, write increasingly complex algorithms for each one, understand the appropriate data structures involved, as well as implementing the program.

While students will still retain a hobbyist model of computer science, they will gain a new level of sophistication of the “questions and…assumptions…that would lead to learning activities that are more likely to help people acquire the relevant expertise” (Bransford & Schwartz, 92). By focusing on allowing the students to gain the confidence to self-explore and see the world in a different manner I hope to increase their retention of the material both for critical and creative thought process as well as for assessments.

**References**

*Bransford, John D, and Daniel L Schwartz. 1999. “Rethinking Transfer: A Simple Proposal with Multiple Implications.” Source: Review of Research in Education 24154112 (1999): 61–100. doi:10.3102/0091732X024001061.*

*Coffey, Janet E., David Hammer, Daniel M. Levin, and Terrance Grant. 2011. “The Missing Disciplinary Substance of Formative Assessment.” Journal of Research in Science Teaching 48 (10): 1109–36. doi:10.1002/tea.20440.*

*Donovan, Ms, Jd Bransford, and Jw Pellegrino. 2000. “Learning: From Speculation to Science.” How People Learn: Brain, Mind, Experience, and School: Expanded Edition, no. 2000: 3–28. doi:10.1016/0885–2014(91)90049-J.*

*Gentner, Dedre. 2010. “Bootstrapping the Mind: Analogical Processes and Symbol Systems.” Cognitive Science. doi:10.1111/j.1551–6709.2010.01114.x.*

*Harrison, Allan G., and David F. Treagust. 1996. “Secondary Students’ Mental Models of Atoms and Molecules: Implications for Teaching Chemistry.” Science Education 80 (5): 509–34. doi:10.1002/(SICI)1098–237X(199609)80:5<509::AID-SCE2>3.0.CO;2-F.*

*Hmelo-Silver, Cindy E., and Merav Green Pfeffer. 2004. “Comparing Expert and Novice Understanding of a Complex System from the Perspective of Structures, Behaviors, and Functions.” Cognitive Science 28 (1): 127–38. doi:10.1016/S0364–0213(03)00065-X.*

*Rittle-Johnson, Bethany. 2006. “Promoting Transfer: Effects of Self-Explanation and Direct Instruction.” Child Development 77 (1): 1–15. doi:10.1111/j.1467–8624.2006.00852.x.*

*Schoenfeld, Alan H. 2015. “Essential Mathematics for the next Generation: What to Teach and How Should We Teach It.” Project IMPULS Symposium, 0–5.*