Providing students with agency to self-scaffold in a computational science and engineering course


This study implements a design-based research approach to design and evaluate different scaffolding strategies for supporting student learning as well as promoting student agency within a computational science course. The course introduces computational methods and tools in the context of disciplinary problems for materials science and engineering students. Initial course offerings suggested that students were overwhelmed by the interdisciplinary nature of the course. Therefore, the research team evaluated different scaffolding strategies for supporting students’ learning, and how those may have provided students with agency to self-scaffold when needed. Three rounds of data collection included 17 students who participated in individual semi-structured interviews to explore how they used (or not) different scaffolds. Five of the participants were recruited for the first iteration; six of them were recruited in the second iteration, and six more in the third one. The iterative process allowed us to adapt the scaffolding procedures for the third iteration from the data collected in iterations 1 and 2. The purpose of this study is to understand how students used different scaffolds, and what implementation strategies were effective according to student uses of these scaffolds in the context of computational science. The results suggest that students developed agency to self-scaffold when needed, as they benefited from multiple scaffolds at different steps of the problem-solving process. Moreover, providing worked examples without engaging students in their active exploration can be ineffective, but this engagement can be achieved using written explanations. Additional support may be needed at an early stage of skill development, so students have an idea of how to validate their model.

This is a preview of subscription content, log in to check access.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5


  1. ACM/IEEE-CS Joint Task Force on Computing Curricula. (2013). Computer science curricula 2013. New York City, Los Alamitos: ACM Press, IEEE Computer Society Press.

    Google Scholar 

  2. Atkinson, R. K., Derry, S. J., Renkl, A., & Wortham, D. (2000). Learning from examples: Instructional principles from the worked examples research. Review of Educational Research, 70(2), 181–214.

    Article  Google Scholar 

  3. Atkinson, R. K., Renkl, A., & Merrill, M. M. (2003). Transitioning from studying examples to solving problems: Effects of self-explanation prompts and fading worked-out steps. Journal of Educational Psychology, 95(4), 774.

    Article  Google Scholar 

  4. Azevedo, R., & Hadwin, A. F. (2005). Scaffolding self-regulated learning and metacognition–Implications for the design of computer-based scaffolds. Instructional Science, 33(5), 367–379.

    Article  Google Scholar 

  5. Azevedo, R., & Jacobson, M. J. (2008). Advances in scaffolding learning with hypertext and hypermedia: A summary and critical analysis. Educational Technology Research and Development, 56(1), 93–100.

    Article  Google Scholar 

  6. Bandura, A. (2006). Toward a psychology of human agency. Perspectives on Psychological Science, 1(2), 164–180.

    Article  Google Scholar 

  7. Barab, S., & Squire, K. (2004). Design-based research: Putting a stake in the ground. Journal of the Learning Sciences, 13(1), 1–14.

    Article  Google Scholar 

  8. Basu, S., Biswas, G., Sengupta, P., Dickes, A., Kinnebrew, J. S., & Clark, D. (2016). Identifying middle school students’ challenges in computational thinking-based science learning. Research and Practice in Technology Enhanced Learning, 11(1), 13.

    Article  Google Scholar 

  9. Collins, A., Brown, J. S., & Newman, S. E. (1988). Cognitive apprenticeship: Teaching the craft of reading, writing and mathematics. Thinking: The Journal of Philosophy for Children, 8(1), 2–10.

    Google Scholar 

  10. Creswell, J. W., & Poth, C. N. (2016). Qualitative inquiry and research design: Choosing among five approaches. Thousand Oaks: Sage.

    Google Scholar 

  11. Elias, S. M., & MacDonald, S. (2007). Using past performance, proxy efficacy, and academic self-efficacy to predict college performance. Journal of Applied Social Psychology, 37(11), 2518–2531.

    Article  Google Scholar 

  12. Greer, J., McCalla, G. I., Cooke, J. E., Collins, J. A., Kumar, V. S., Bishop, A. S., et al. (2000). Integrating cognitive tools for peer help: The intelligent intranet peer help-desk project. Computers as Cognitive Tools, 2, 69–96.

    Google Scholar 

  13. Guzdial, M. (1994). Software-realized scaffolding to facilitate programming for science learning. Interactive Learning Environments, 4(1), 001–044.

    Article  Google Scholar 

  14. Hartman, H. J. (2001) Developing students’ metacognitive knowledge and skills. In: H. J. Hartman (Ed.), Metacognition in learning and instruction. Neuropsychology and cognition, vol 19. Dordrecht: Springer.

  15. Holton, D., & Clarke, D. (2006). Scaffolding and metacognition. International Journal of Mathematical Education in Science and Technology, 37(2), 127–143.

    Article  Google Scholar 

  16. Hwang, W. Y., Hsu, J. L., Shadiev, R., Chang, C. L., & Huang, Y. M. (2015). Employing self-assessment, journaling, and peer sharing to enhance learning from an online course. Journal of Computing in Higher Education, 27(2), 114–133.

    Article  Google Scholar 

  17. Johnson, E. K. (2019). Waves: scaffolding self-regulated learning to teach science in a whole-body educational game. Journal of Science Education and Technology, 28(2), 133–151.

    Article  Google Scholar 

  18. Kaplan, D. E., & An, H. (2005). Facts, procedures, and visual models in Novices’ learning of coding skills. Journal of Computing in Higher Education, 17(1), 43–70.

    Article  Google Scholar 

  19. Kim, M. C., & Hannafin, M. J. (2011). Scaffolding problem solving in technology-enhanced learning environments (TELEs): Bridging research and theory with practice. Computers & Education, 56(2), 403–417.

    Article  Google Scholar 

  20. Klemenčič, M. (2015). What is student agency? An ontological exploration in the context of research on student engagement. In: M. Klemenčič, S. Bergan, R. Primožič (Eds.), Student engagement in Europe: Society, higher education and student governance (pp. 11–29). Council of Europe Higher Education Series No. 20. Strasbourg: Council of Europe Publishing.

  21. Koedinger, K.R. (2001) Cognitive tutors as modeling tool and instructional model. In: K. D. Forbus, P. J. Feltovich (Eds.), Smart machines in education: The coming revolution in educational technology. (pp. 145–168). Menlo Park, CA: AAAI/MIT Press.

  22. Lajoie, S. P. (2005a). Cognitive tools for the mind: the promises of technology—cognitive amplifiers or bionic prosthetics? In: D. D. Preiss (Ed.), Intelligence and technology. The impact of tools on the nature and development of human skills. Mahwah, NJ: Lawrence Erlbaum Associates.

  23. Lajoie, S. P. (2005b). Extending the scaffolding metaphor. Instructional Science, 33(5–6), 541–557.

    Article  Google Scholar 

  24. Lindgren, R., & McDaniel, R. (2012). Transforming online learning through narrative and student agency. Educational Technology & Society, 15(4), 344.

    Google Scholar 

  25. Lye, S. Y., & Koh, J. H. L. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41, 51–61.

    Article  Google Scholar 

  26. Magana, A. J., Falk M. L., & Reese M. J. (2013) Introducing discipline-based computing in undergraduate engineering education. ACM Transactions on Computing Education, 13(4), 1–22.

  27. Magana, A. J., Falk, M. L., Vieira, C., & Reese Jr, M. J. (2016). A case study of undergraduate engineering students' computational literacy and self-beliefs about computing in the context of authentic practices. Computers in Human Behavior, 61, 427–442.

  28. Magana, A. J., Falk, M. L., Vieira, C., Reese, M. J., Alabi, O., & Patinet, S. (2017). Affordances and challenges of computational tools for supporting modeling and simulation. Computer Applications in Engineering Education.

    Article  Google Scholar 

  29. Magana, A. J., Fennell, H. W., Vieira, C., & Falk, M. L. (2019). Characterizing the interplay of cognitive and metacognitive knowledge in computational modeling and simulation practices. Journal of Engineering Education, 108(2), 276–303.

  30. Magana, A. J., & Mathur, J. I. (2012). Motivation, awareness, and perceptions of computational science. Computing in Science & Engineering, 14(1), 74–79.

  31. Magana, A. J., Vieira, C., & Yan, J. (2015). Exploring design characteristics of worked examples to support programming and algorithm design. The Journal of Computational Science Education, 6(1), 2–15.

  32. Magana, A. J., Vieira, C., Fennell, H. W., Roy, & A., Falk, M. L. (2020). Undergraduate engineering students’ types and quality of knowledge used in synthetic modeling. Cognition and Instruction, 38(4), 503–537.

  33. Margulieux, L. E., Guzdial, M., & Catrambone, R. (2012). Subgoal-labeled instructional material improves performance and transfer in learning to develop mobile applications. In Proceedings of the ninth annual international conference on international computing education research (pp. 71–78). ACM.

  34. Moreno, R., Reisslein, M., & Ozogul, G. (2009). Optimizing worked-example instruction in electrical engineering: The role of fading and feedback during problem-solving practice. Journal of Engineering Education, 98(1), 83–92.

    Article  Google Scholar 

  35. Mselle, L. J., & Twaakyondo, H. (2012). The impact of Memory Transfer Language (MTL) on reducing misconceptions in teaching programming to novices. International Journal of Machine Learning and Applications, 1(1), 6.

    Article  Google Scholar 

  36. National Academies of Sciences, Engineering, and Medicine. (2016). Promising practices for strengthening the regional STEM workforce development ecosystem. Washington: National Academies Press.

    Google Scholar 

  37. National Research Council. (2000). How people learn: Brain, mind, experience, and school (Expanded ed.). Washington: National Academies Press.

    Google Scholar 

  38. NSF (2011). Empowering the nation through discovery and innovation: NSF strategic plan for fiscal years (FY) 2011–2016. Washington, DC: Author. Retrieved from

  39. Pea, R. D. (2004). The social and technological dimensions of scaffolding and related theoretical concepts for learning, education, and human activity. The Journal of the Learning Sciences, 13(3), 423–451.

    Article  Google Scholar 

  40. Sandoval, W. (2014). Conjecture mapping: An approach to systematic educational design research. Journal of the Learning Sciences, 23(1), 18–36.

    Article  Google Scholar 

  41. Shaffer, D. W., & Resnick, M. (1999). “Thick” authenticity: New media and authentic learning. Journal of interactive learning research, 10(2), 195–216.

  42. Sharma, P., & Hannafin, M. (2005). Learner perceptions of scaffolding in supporting critical thinking. Journal of Computing in Higher Education, 17(1), 17.

    Article  Google Scholar 

  43. Sweller, J., Ayres, P., & Kalyuga, S. (2011). Cognitive load theory. New York: Springer.

    Google Scholar 

  44. Sweller, J., van Merriënboer, J. J., & Paas, F. (2019). Cognitive architecture and instructional design: 20 years later. Educational Psychology Review, 31, 1–32.

    Article  Google Scholar 

  45. Van Merriënboer, J. J., Clark, R. E., & De Croock, M. B. (2002). Blueprints for complex learning: The 4C/ID-model. Educational Technology Research and Development, 50(2), 39–61.

    Article  Google Scholar 

  46. Vieira, C., Magana, A. J., Falk, M. L., Garcia, R. E. (2017). Writing in-code comments to self-explain in computational science and engineering education. ACM Transactions on Computing Education, 17(4), 1–21.

  47. Vieira, C., Magana A. J., Roy A., Falk, M. L. (2019). Student explanations in the context of computational science and engineering education. Cognition and Instruction, 37(2), 201–231.

  48. Wing, J. M. (2008). Computational thinking and thinking about computing. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 366(1881), 3717–3725.

    Article  Google Scholar 

  49. Wood, D., Bruner, J. S., & Ross, G. (1976). The role of tutoring in problem solving. Journal of Child Psychology and Psychiatry, 17(2), 89–100.

Download references


This research has been partially supported by the National Science Foundation under the awards EEC1449238 and EEC1329262.

Author information



Corresponding author

Correspondence to Camilo Vieira.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendix A: Additional quotes

Appendix A: Additional quotes

Scaffolding and their uses in iteration 1

Video Lectures

Phoenix_H: having the slides available is huge because then you can go through it at your own pace, and I think that’s how come the quizzes obviously I’ve done well on those. So without the slides and just the lecture I think it would be a lot harder for me to succeed in those.

Instructor and TA

Charlie_H: “<the professor > doesn’t work with MatLab…, which is okay. He’s working with another software. He maybe doesn’t have time, but he’s teaching the class like he should, but he didn’t. … Overall I figured that suggestions from [the course instructor] or the class introduction made the project harder because I had to find [the solution]


Jessie_H: And I just want to make sure because I know some of my classmates, they’ll type in the function. We’ll do the same outputs and then we’ll get different answers and it worries us and then we’ll get someone else that will test it and they’ll either agree with me or agree with them.

Charlie_H :“before starting to talk. I needed one hour to just read this, write my code plan out, my inputs and outputs and functions that I’m going to use. Understand those, before getting to coding. During that part, I’m really trying to understand so there’s no point in having a partner at that point.”

Code snippets

Phoenix_H: I mean initially I was confused and I was kind of overwhelmed, but once I sat down and read it I had to pick a place to start, so obviously I started with stim tissue. I like the way that they’re laid out. That really helps you understand it.

Test Cases

Jessie_H:[the TA] is a big proponent of having us do test cases like either doing it in the command window or making an M file of just not a function, just something you can run, testing a certain method. So we did that and we it didn’t take too long to get these two functions down where like then one thing that was an element of the debugging was everyone do the same exact inputs, see if you get the same thing, and if you didn’t, you would help it’s actually very helpful.

Scaffolding and their uses in iteration 2

Video Lectures

Emerson_H: “I did actually buy the electronic textbook that was a recommended resource. I ended up not reading as much of it, I think, halfway through the semester, because basically whatever was covered in the textbook was covered in the lectures albeit in a somewhat different order”

Worked Examples

Justice_H: “Well, in order to make the comments, at least I hope that they’re right, but in order to do that you really need to go through line by line what each line’s doing. And I mean, the solutions that they have are these versions ofusually they worked out example exercises or like really elegant and, you know, it’s sort of an example of how to do these things very well and simply.”

Logan_L: “It definitely helps. One of them was debugging and I think that for our final project we need to use GUIs which is the most recent extra credit that I haven’t done yet, but I’m assuming that will help me. For the final project. Yeah, so they definitely help”

Alexis_L: I used most of them. Most of them I’ve seen and I did have to see the YouTube videos for knowing what was going on becausemore what was going on because they give like an example of more like what the code was, but I kind of looked at the YouTube video to see what was going on in each line of code.

Elliot_L: I felt that those were helpful because then you get tomost of them are exercises that we didn’t get to in class, so it helped to have someone walk through all of them.


Armani_H: When we don’t understand something about the actual application of the assignment, we go to them, mainly the professor, sometimes the TA. If you have a problem with the code… I can’t figure it out, right? I’ll look to my peers. I’ll say like can you help me with this, whatever. And if they can’t figure out, or everyone has the same problem, I go to the TA

Emerson_H: I think my group, when we discuss things, we usually can’t come to a conclusion when we’re talking about the project proposal or interpreting the results, because none of us feel confident in our answers to be able to dictate, okay, this is what it must mean

Code snippets

Emerson_H: “And so the only three new parameters here were T, S time and P time. And I think for this, this was the one function where the way it was described to us was kind of confusing, ‘cause at first I didn’t realize that the simulation lasted T time steps. I thought that T was the actual time at which it was running.”

Logan_L: “So we just went function by function.

Justice_H: “So the first day… we had some time to work on it. And so I did stim tissue first because that’s what the first function was, and it seemed pretty easy”

Test Cases

Justice_H: “there was a certain input that he[the TA] ran that generated this and he showed a couple of the plots of it…. That was just to show, so an example ofand since stim tissue it’s necessarily random, but it was just to show us an example of how things should look because I think without seeing it visually it might be difficult to determine whether or not your plots are even close to being accurate

Logan_L: “We were given tests, like to test our code. We were given specific inputs and then they showed us what it should look like… They gave us pictures.

Scaffolding and their Uses in Iteration 3

Worked Examples

Harper_L: “Yeah, I do them all. Probably mostly just for extra credit. But it is helpful, because you get to see how other functions are working. Because a lot of those I don’t know if I’d just be able to write myself. So when we have the example given to us and you comment it, you learn how it’s working and then maybe I would be able to write it myself after seeing it.”

Ash_H: “I found them useful at the beginning of class‘cause … I had programmed a bit before this…. So, I had, like, some idea of how to program, but the way of doing things, the way MATLAB would like you to do them and all the MATLAB syntax was very new to me. So, getting used to that wasthey were useful for getting used to that for me, but they’re weren’t aslike, the concepts that were being learned were not that new. So, I didn’t need them after I sort of learned the MATLAB way of handling data.”

Instructor and TA

Oakley_L: my first two projects were really horrible, I had, like, this really big problem feeling like I could talk to the people in my group. I guess like just students in general in my class. And I kind of felt like the outsider, and I felt really self-conscious and unconfident about talking to any of the students, because I felt like I wasn’t contributing… And so when I’m talking to someone I’m kind of hoping that maybe they can maybe kind of explain it to me a little bit better. But it felt like to me when other students were talking they were going, “Oh, what do you know? What do you know? Now let’s compare.” I’m like, “Oh.” I felt bad. I kind of, I felt really bad going, “I really don’t get it.”

Especially like if I’m talking to a TA and they’re like, ‘Oh, just think about this,’ and I’m like, ‘Okay.’ And then I get stuck like 20 s later…. I was feeling so horrible about programming, because as is known, you can program the same thing multiple ways or a different way to do things. And so whenever I was looking at the code, you know, even when people, like, talking about the TA’s trying to help me, trying to like guide me through it, they’re like, ‘Well, we’re not trying to tell you which way to go.’ But like in my mind, I’m like, ‘Hey, I would love to be like a basic formula and that’s what I go with’.

[the instructor is] extremely accessible. I’m like even though it’s like e-mail. I mean, he responds crazy fast. And if you do ask him questions he’s like as thorough as he possibly can. And like if you talk to him you just feel like you just like are enlightened about the universe.

Dakota_L: So it kind of makes it hard for the people who don’t know what they’re doing, especially when those people need help from TAs and stuff like that, because, well, they’re starting on the project, and they’re way more behind than the people who know what they’re doing, so then they’re getting help debugging, but we’re also waiting for help. We’re fighting for help, kind of like the people who are over here are in a different place than the people who are further behind on the project.

Remy_H: “for the most part, I understood how to implement anythingI guess there wasn’t really an issue that I came to that I didn’t know how to solve


Harper_L: I think it’s definitely helpful. We work in groups a good amount even during class hours when we have the opportunity to work on the projects we mostly work in groups. And it’s helpful, because like I said, because it’s good to have someone else’s eyes look at it, because sometimes you’re just missing something and it’s right in front of you, but you can’t see, because you’ve been looking at it for so long. So that’s definitely helpful and also talking through to get started, I think. When we do the planning in class, it’s also really helpful to have groups, because everyone can just brainstorm together and when everyone’s ideas comes together it helps a lot.

Landry_H: “And also compared my results to of my classmates. Because… Yeah, it’s very helpful. It’s like, yeah. I found out the bug here after I compared my results to other people whose…

Remy_H: “we sort of sat together for the first class period that they gave us to sort of discuss the general structure of it and we even sort of outlined the plan a very similar way because we were talking together at the time… this one was also a little bit more open-ended as well saying what causes the problems and we don’t really know what exactly that is, but I looked to see if people were getting similar results or what they thought was sort of the problem as the questions asks, just to make sure were in sort of the same thing.”

Code Snippets

Dakota_L: “I used the main assignment PDF just to give me my outlines of functions.

Harper_L: “they were very helpful to get youI think me personally, it’s hard to get started if you don’t know the structure of each one and the given inputs and outputs. It’s easier to differentiate the flow and what you’re going to need to do when you have the structure and also the description of each function.

Remy_H: “I mean for most of them, the program was broken up in a similar way that I would have done it, so I had no problem sort of literally using these … but they definitely structured the program in a way that I think did make it easier for maybe those who didn’t quitewho would be kind of lost without it, I think they were helpful

Ash_H: “I think the when you’re not given a structure it’s more difficult, because you can sort of use this as like a peek ahead to see how it should work in the end. So I think it makes a lot of sense that he gives them, he gives us structures towards the beginning of the semester and then doesn’t towards the end of the semester, makes sense.

Test Cases

Oakley_L “[the instructor] gave us test cases. Do these test cases match his test cases? Yes, they do. When I put my program with these values. And so I’m supposed to come in with those same values, and they do the same thing. Okay. I’m pretty sure I’m on the right path here. But so far it’s understanding what each detail. I’m like, “Mm.” And so what I finally broke it down to when it’s saying, when it’s talking about it’s going to expand over the area, I was thinking was, I guess, was talking about this pulse that the heart is making. So it made sense in my mind. I’m like, “It’s the heart. It pulses. That’s what these expanding rings are.” And that’s what I left it as.”

Harper_L: “So then for testing, first I did the given test cases and my code and those are shown here.… And these were the outputs that were given as test cases as well, so I knew that was working correctly. This was also a given test case, so it’s just stem tissue and that’s what happened when U was inputted to stem tissue…. So I don’t really think I used outside sources besides the description here and just fooling around with the test cases and picking random values a little bit and seeing what would happen when they were picked.”

Ash_H: “So, this was just a test whether the initiation works….The second test case was stepping the same tissue one time… it’s just stepping this by one time and there’s a certain amount of change in potential and of diffusion that you should see.”

Remy_H: “So these were the given test cases, initialize tissue, this is just not graphical at all, just to sort of make surethis is to help you sort of go with the idea of testing each sub function along the way. Then the next test case was to show that the way you implemented the updating conditions were working correctly. And that’s similar with test case three

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Vieira, C., Magana, A.J., Roy, A. et al. Providing students with agency to self-scaffold in a computational science and engineering course. J Comput High Educ (2020).

Download citation


  • Computational science
  • Computational thinking
  • Scaffolding
  • Worked-examples
  • Self-explanations
  • Agency