Computing education researchers (CERs) theorize that learning how to program requires the development of at least four skills: code reading and tracing, code writing, pattern comprehension, and pattern application . Developing these skills requires deliberate practice which involves engaging in tasks specifically designed to improve ones’ skills in a particular domain . Web-based interactive programming practice environments such as CloudCoder , CodeChef , CodeLab , CodeWars , CodingBat , Edabit , and LeetCode  can be considered informal and/or open-ended learning environments (OELEs) that support deliberate practice—the learner decides what to learn and when [3, 12, 24].
OELEs support self-directed learning [14, 16, 18] of computing topics by inspiring programmers to complete projects that are meaningful to them , by helping programmers build self-confidence, and by increasing programmers’ sense of control over their learning process . But the absence of a predefined curriculum and/or scaffolding, which are tenets of OELEs [12, 16, 18], has led to such environments being criticized for failing to help learners grasp basic computer programming concepts [4, 20]. Learners may form inadequate mental models of basic programming concepts , struggle to find good resources, and struggle to get help from real experts when learning in these environments . Hence, Begel and Ko , in their chapter on informal learning, call for researchers to investigate whether learning technologies should “structure learning for learners” or whether learners should “be taught how to structure their own independent learning” outside of the classroom [p. 763].
We are designing a self-directed learning environment for computer programming practice called Codespec. Its problem space area offers learners the option to switch between solving a problem as either a pseudocode problem (also described as subgoals and programming plans) [6, 22], a Parsons problem [9, 26], a Faded Parsons problem , a fix code problem , or a write-code problem. Runestone  is the only environment that plans to offer programmers the option to solve the same problem as a Parsons problem or write-code problem, and Crescendo aims to support scaffolding for independent learning .
Our prototype features a “Help” menu with the options to combine blocks, predict code, reveal distractors, show pseudocode, suggest changes, and provide indentation. Evidence shows programming plans (pseudocode) and purpose-first scaffolds can motivate novice programmers to learn programming [see 6]. We will explore how to incorporate pseudocode across each problem type. And while it is more efficient to solve Parsons problems than fixing and writing code , including the latter two types of problems can increase our potential to support a broad range of learners’ abilities .
The Big Questions
Our preliminary research questions are based on prior research on scaffolding self-directed learning with personalized learning and learner modeling in computer science education research (CSEd) [see 2, 18]. They are (1) how do we develop models for personalized learning across the different problem types for an introduction to programming? And (2) what is the effect of personalized scaffolding on self-directed learning in Codespec’s adaptive learning environment? To evaluate our prototype and develop a model for personalized learning, we plan to interview stakeholders in computing education and conduct an experiment similar to .
The goal is to design a system with diverse stakeholders that will:
Benefit programmers, instructors, and researchers
Cultivate inclusion, diversity, equity, accessibility, and sexual orientation and gender identity awareness (IDEAS)
 Valerie Barr and Deborah Trytten. 2016. Using turing’s craft codelab to support CS1 students as they learn to program. ACM Inroads 7, 2 (2016), 67–75.
 Satabdi Basu, Gautam Biswas, and John S Kinnebrew. 2017. Learner modeling for adaptive scaffolding in a computational thinking-based science learning environment. User Modeling and User-Adapted Interaction 27, 1 (2017), 5–53.
 Andrew Begel and Amy J Ko. 2019. Learning outside the classroom. (2019).
 Vicki E Bennett, Kyu Han Koh, and Alexander Repenning. 2011. CS education re-kindles creativity in public schools. In Proceedings of the 16th annual joint conference on innovation and technology in computer science education. 183–187.
 Jonas Boustedt, Anna Eckerdal, Robert McCartney, Kate Sanders, Lynda Thomas, and Carol Zander. 2011. Students’ perceptions of the differences between formal and informal learning. In Proceedings of the seventh international workshop on Computing education research. 61–68.
 Kathryn Cunningham, Barbara J Ericson, Rahul Agrawal Bejarano, and Mark Guzdial. 2021. Avoiding the Turing Tarpit: Learning Conversational Programming by Starting from Code’s Purpose. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems. 1–15.
 Directi. 2021. CodeChef. https://www.codechef.com/
 Nathan Doctor and Jake Hoffner. 2021. Codewars. https://www.codewars.com/
 Barbara Ericson, Austin McCall, and Kathryn Cunningham. 2019. Investigating the Affect and Effect of Adaptive Parsons Problems. In Proceedings of the 19th Koli Calling International Conference on Computing Education Research. 1–10.
 Barbara J Ericson, Lauren E Margulieux, and Jochen Rick. 2017. Solving parsons problems versus fixing and writing code. In Proceedings of the 17th koli calling international conference on computing education research. 20–29.
 K Anders Ericsson, Ralf T Krampe, and Clemens Tesch-Römer. 1993. The role of deliberate practice in the acquisition of expert performance. Psychological review 100, 3 (1993), 363.
 Michael J Hannafin, Craig Hall, Susan Land, and Janette Hill. 1994. Learning in open-ended environments: Assumptions, methods, and implications. Educational Technology 34, 8 (1994), 48–55.
 Carl C Haynes and Barbara J Ericson. 2021. Problem-Solving Efficiency and Cognitive Load for Adaptive Parsons Problems vs. Writing the Equivalent Code. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems. 1–15.
 Malcolm S Knowles. 1975. Self-directed learning: A guide for learners and teachers. (1975).
 D Midian Kurland and Roy D Pea. 1985. Children’s mental models of recursive LOGO programs. Journal of Educational Computing Research 1, 2 (1985), 235–243.
 Susan M Land and Michael J Hannafin. 1996. A conceptual framework for the development of theories-in-action with open-ended learning environments. Educational Technology Research and Development 44, 3 (1996), 37–53.
 LeetCode. 2022 [Online]. The World’s Leading Online Programming Learning Platform. https://leetcode.com/
 Tobias Ley, Barbara Kump, and Cornelia Gerdenitsch. 2010. Scaffolding selfdirected learning with personalized learning goal recommendations. In International conference on user modeling, adaptation, and personalization. Springer, 75–86.
 Matt MacPherson. 2021. Edabit. https://edabit.com/
 Richard E Mayer. 2004. Should there be a three-strikes rule against pure discovery learning? American psychologist 59, 1 (2004), 14.
 Robert McCartney, Jonas Boustedt, Anna Eckerdal, Kate Sanders, Lynda Thomas, and Carol Zander. 2016. Why computing students learn on their own: Motivation for self-directed learning of computing. ACM Transactions on Computing Education (TOCE) 16, 1 (2016), 1–18.
 Briana B Morrison, Lauren E Margulieux, Barbara Ericson, and Mark Guzdial. 2016. Subgoals help students solve Parsons problems. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education. 42–47.
 Andrei Papancea, Jaime Spacco, and David Hovemeyer. 2013. An open platform for managing short programming exercises. In Proceedings of the ninth annual international ACM conference on International computing education research. 47– 52.
 Seymour A Papert. 2020. Mindstorms: Children, computers, and powerful ideas. Basic books.
 Nick Parlante. 2021. CodingBat. https://codingbat.com/
 Dale Parsons and Patricia Haden. 2006. Parson’s programming puzzles: a fun and effective learning tool for first programming courses. In Proceedings of the 8th Australasian Conference on Computing Education-Volume 52. 157–163.
 Wengran Wang, Rui Zhi, Alexandra Milliken, Nicholas Lytle, and Thomas W Price. 2020. Crescendo: Engaging students to self-paced programming practices. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education. 859–865.
 Nathaniel Weinman, Armando Fox, and Marti A Hearst. 2021. Improving Instruction of Programming Patterns with Faded Parsons Problems. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems. 1–4.
 Jacob O Wobbrock, Shaun K Kane, Krzysztof Z Gajos, Susumu Harada, and Jon Froehlich. 2011. Ability-based design: Concept, principles and examples. ACM Transactions on Accessible Computing (TACCESS) 3, 3 (2011), 1–27.
 Benjamin Xie, Dastyni Loksa, Greg L Nelson, Matthew J Davidson, Dongsheng Dong, Harrison Kwik, Alex Hui Tan, Leanne Hwa, Min Li, and Amy J Ko. 2019. A theory of instruction for introductory programming skills. Computer Science Education 29, 2-3 (2019), 205–253.