Sara Nurollahian
Current Organizations / Institutes
The organizations/institutes from the scholar's latest article
Research Subjects
Sara Nurollahian has a total of 10 co-authors. Here are the top co-authors by number of shared publications:
- Eliane Stampfer Wiese
University of Utah, Salt Lake City, UT, USA
4 shared publications - Noelle Brown
University of Utah, Salt Lake City, UT, USA
3 shared publications - Anna N. Rafferty
Carleton College
2 shared publications - Tamanna Motahar
Paul G Allen School of Computer Science and Engineering, University of Washington, Seattle, Washington, USA
2 shared publications - Adriana Salazar
University of Utah, Salt Lake City, UT, USA
1 shared publication - Hieke Keuning
Utrecht University, Utrecht, Netherlands
1 shared publication
Latest Publications
- Open Access
- 11 November 2026
- Published by Association for Computing Machinery (ACM)
- p. 681-682
The Growing Importance of Code Quality Instruction in the AI Era
- 11 November 2026
- Published by Association for Computing Machinery (ACM)
- p. 681-682
Open AccessThe Growing Importance of Code Quality Instruction in the AI Era
- Open Access
- 19 March 2026
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computing Education
- Vol. 26 (2) , 1-50
A Systematic Review of Approaches for Evaluating Students’ Function-Level Code Structure Knowledge with a Catalog of All Discussed Patterns
Code structure, an important aspect of code quality, involves stylistic and structural decisions within individual functions, such as selecting appropriate control flow structures for a specific task. Despite over 40 years of research on student performance in various code structure topics, a comprehensive overview of these studies remains absent. Therefore, we conducted a systematic literature review to understand which function-level code structure topics were considered essential for student learning and what assessment practices were used to evaluate students’ knowledge of code structure. Our review identified approximately 70 code-structure topics, which we classified into 7 categories: expressions, variables and parameters, Boolean expressions, conditionals, loops, functions, and others. We created a catalog of these topics that includes their definitions, an example defect for each topic, and a corresponding solution. This catalog can serve as a resource for instructors seeking to incorporate code structure into introductory programming courses, as well as for researchers developing educational tools or investigating the extent and causes of code-structure violations. Regarding assessment practices in prior studies, we found that various assessment tasks and student artifacts were utilized, with half of the studies examining students’ code-writing submissions for the occurrence of violations. While this approach is scalable through the use of automated detectors, it provides limited insight into the underlying causes of these violations or into students’ performance on non-writing skills such as code refactoring. Additionally, we found very little research that focuses on specific assessment tasks such as code recall and code editing (i.e., refactoring others’ code). Moreover, while many studies suggested that student code structure defects stem from knowledge gaps in programming concepts, only a few empirically tested this hypothesis. Finally, we conclude this study by highlighting open areas for future research on code structure.
- 19 March 2026
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computing Education
- Vol. 26 (2) , 1-50
Open AccessA Systematic Review of Approaches for Evaluating Students’ Function-Level Code Structure Knowledge with a Catalog of All Discussed Patterns
Code structure, an important aspect of code quality, involves stylistic and structural decisions within individual functions, such as selecting appropriate control flow structures for a specific task. Despite over 40 years of research on student performance in various code structure topics, a comprehensive overview of these studies remains absent. Therefore, we conducted a systematic literature review to understand which function-level code structure topics were considered essential for student learning and what assessment practices were used to evaluate students’ knowledge of code structure. Our review identified approximately 70 code-structure topics, which we classified into 7 categories: expressions, variables and parameters, Boolean expressions, conditionals, loops, functions, and others. We created a catalog of these topics that includes their definitions, an example defect for each topic, and a corresponding solution. This catalog can serve as a resource for instructors seeking to incorporate code structure into introductory programming courses, as well as for researchers developing educational tools or investigating the extent and causes of code-structure violations. Regarding assessment practices in prior studies, we found that various assessment tasks and student artifacts were utilized, with half of the studies examining students’ code-writing submissions for the occurrence of violations. While this approach is scalable through the use of automated detectors, it provides limited insight into the underlying causes of these violations or into students’ performance on non-writing skills such as code refactoring. Additionally, we found very little research that focuses on specific assessment tasks such as code recall and code editing (i.e., refactoring others’ code). Moreover, while many studies suggested that student code structure defects stem from knowledge gaps in programming concepts, only a few empirically tested this hypothesis. Finally, we conclude this study by highlighting open areas for future research on code structure.
- Open Access
- 31 March 2025
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computing Education
- Vol. 25 (1) , 1-33
Evaluating Micro-Insertion as a Method for Teaching Responsible Computing: Results from a Randomized Controlled Experiment
While there have been many calls for teaching ethics and responsible computing, it is unclear how responsible computing instruction and technical learning interact. Some instructors even hesitate to include ethics in their courses, fearing it might distract students from learning technical computing content. An approach called micro-insertion offers a path to teaching responsible computing while teaching technical content. Micro-insertion situates technical problems in real-world contexts, with frequent, minimally invasive discussions of potential harms of a computing professional’s technical choices. We conducted a between-subjects laboratory study where 82 post-secondary student participants were randomly assigned to one of two instructional conditions to learn a computing topic. The technical-only condition received traditional instruction, while the micro-insertion condition learned the same technical material contextualized within a real-world scenario with potential broader ethical or social impacts. Our study design included a pre-test, instruction intervention, immediate post-test, and a 2-week delayed post-test. Each test included both technical and contextualized questions, and the instructional time was the same across both conditions. The study revealed no statistically significant differences in learning outcomes between the two conditions. Participants in both conditions improved in solving problems presented both abstractly and contextualized with a real-world narrative. Thus, we did not find evidence that our responsible computing intervention distracted participants from learning the technical topics. Further, participants in the technical-only condition could correctly respond to contextualized questions, suggesting that students might be able to engage with responsible computing micro-insertions without targeted instruction. To more deeply understand students’ reasoning, we conducted follow-up interviews with 13 of the participants. The interviews revealed that participants in both conditions perceived to have learned about responsible computing from the study. However, the depth and quality of participants’ engagement with real-world issues varied significantly, with many only superficially addressing the context and many relying on their own personal experiences as their source of knowledge. We, therefore, encourage future studies to investigate other approaches to responsible computing education to determine which approach results in more meaningful consideration of social and ethical issues and whether that detracts from or supports technical learning.
- 31 March 2025
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computing Education
- Vol. 25 (1) , 1-33
Open AccessEvaluating Micro-Insertion as a Method for Teaching Responsible Computing: Results from a Randomized Controlled Experiment
While there have been many calls for teaching ethics and responsible computing, it is unclear how responsible computing instruction and technical learning interact. Some instructors even hesitate to include ethics in their courses, fearing it might distract students from learning technical computing content. An approach called micro-insertion offers a path to teaching responsible computing while teaching technical content. Micro-insertion situates technical problems in real-world contexts, with frequent, minimally invasive discussions of potential harms of a computing professional’s technical choices. We conducted a between-subjects laboratory study where 82 post-secondary student participants were randomly assigned to one of two instructional conditions to learn a computing topic. The technical-only condition received traditional instruction, while the micro-insertion condition learned the same technical material contextualized within a real-world scenario with potential broader ethical or social impacts. Our study design included a pre-test, instruction intervention, immediate post-test, and a 2-week delayed post-test. Each test included both technical and contextualized questions, and the instructional time was the same across both conditions. The study revealed no statistically significant differences in learning outcomes between the two conditions. Participants in both conditions improved in solving problems presented both abstractly and contextualized with a real-world narrative. Thus, we did not find evidence that our responsible computing intervention distracted participants from learning the technical topics. Further, participants in the technical-only condition could correctly respond to contextualized questions, suggesting that students might be able to engage with responsible computing micro-insertions without targeted instruction. To more deeply understand students’ reasoning, we conducted follow-up interviews with 13 of the participants. The interviews revealed that participants in both conditions perceived to have learned about responsible computing from the study. However, the depth and quality of participants’ engagement with real-world issues varied significantly, with many only superficially addressing the context and many relying on their own personal experiences as their source of knowledge. We, therefore, encourage future studies to investigate other approaches to responsible computing education to determine which approach results in more meaningful consideration of social and ethical issues and whether that detracts from or supports technical learning.
- Open Access
- 27 October 2024
- Published by Association for Computing Machinery (ACM)
- p. 1-17
Exploring how People with Spinal Cord Injuries Seek Support on Social Media
Individuals who have sustained a Spinal Cord Injury (SCI) undergo abrupt changes in their functional abilities, impacting all aspects of their lives and imposing a life-long reliance on assistive tools and support from others. This paper aims to understand individuals’ support-seeking behavior in social media as they adjust to their “new normal”—life with reduced mobility and sensation. To understand their online support-seeking behavior, we conducted content analysis on 960 post-threads from SCI-specific subreddit groups. We found that individuals seek informational and emotional support regardless of injury level and time elapsed since injury. Additionally, individuals seek and receive online informational support concerning assistive logistics, motor-functionality, newly acquired self-care, and daily living activities. Similarly, individuals seek emotional support for motivation, and creating new self-identity. Finally, we discuss how social media support dynamics might facilitate reconstructing self-identity, adopting assistive technology, and improving relationships to help adjust to the “new normal.”
- 27 October 2024
- Published by Association for Computing Machinery (ACM)
- p. 1-17
Open AccessExploring how People with Spinal Cord Injuries Seek Support on Social Media
Individuals who have sustained a Spinal Cord Injury (SCI) undergo abrupt changes in their functional abilities, impacting all aspects of their lives and imposing a life-long reliance on assistive tools and support from others. This paper aims to understand individuals’ support-seeking behavior in social media as they adjust to their “new normal”—life with reduced mobility and sensation. To understand their online support-seeking behavior, we conducted content analysis on 960 post-threads from SCI-specific subreddit groups. We found that individuals seek informational and emotional support regardless of injury level and time elapsed since injury. Additionally, individuals seek and receive online informational support concerning assistive logistics, motor-functionality, newly acquired self-care, and daily living activities. Similarly, individuals seek emotional support for motivation, and creating new self-identity. Finally, we discuss how social media support dynamics might facilitate reconstructing self-identity, adopting assistive technology, and improving relationships to help adjust to the “new normal.”
- Open Access
- 7 March 2024
- Published by Association for Computing Machinery (ACM)
- p. 979-985
Growth in Knowledge of Programming Patterns: A Comparison Study of CS1 vs. CS2 Students
How does students' knowledge of code structure improve as they progress through their degree, and where do students struggle? We conducted a comparative study between introductory (CS1) and intermediate CS students (CS2) to explore these questions. Using an online survey with several tasks, including identification of expert patterns, judgment of readable structure, code comprehension, code writing, and editing, we focused on two important code structures: (S1) returning boolean expressions directly and (S2) unique vs. repeated code within if and else. Student performance varied based on structure and task: in both S1 and S2, CS2 students demonstrated higher performance in identifying patterns, judgment of readable structure, and editing. However, evidence of improvement in code writing was only found for S1, and improvement in code comprehension was only found for S2. Therefore, students may need different supports across different code structures. With the exception of comprehension of S1, student performance was far below ceiling, suggesting a need for more support. Additionally, we examined how student performance in different tasks was related to their writing structure. Overall, there were limited and varying relationships between performance in other tasks and writing: code editing predicted writing performance for both structures. For S1, student judgment of readability was also associated with writing structure, and for S2, comprehension predicted writing structure.
- 7 March 2024
- Published by Association for Computing Machinery (ACM)
- p. 979-985
Open AccessGrowth in Knowledge of Programming Patterns: A Comparison Study of CS1 vs. CS2 Students
How does students' knowledge of code structure improve as they progress through their degree, and where do students struggle? We conducted a comparative study between introductory (CS1) and intermediate CS students (CS2) to explore these questions. Using an online survey with several tasks, including identification of expert patterns, judgment of readable structure, code comprehension, code writing, and editing, we focused on two important code structures: (S1) returning boolean expressions directly and (S2) unique vs. repeated code within if and else. Student performance varied based on structure and task: in both S1 and S2, CS2 students demonstrated higher performance in identifying patterns, judgment of readable structure, and editing. However, evidence of improvement in code writing was only found for S1, and improvement in code comprehension was only found for S2. Therefore, students may need different supports across different code structures. With the exception of comprehension of S1, student performance was far below ceiling, suggesting a need for more support. Additionally, we examined how student performance in different tasks was related to their writing structure. Overall, there were limited and varying relationships between performance in other tasks and writing: code editing predicted writing performance for both structures. For S1, student judgment of readability was also associated with writing structure, and for S2, comprehension predicted writing structure.
- Open Access
- 7 August 2023
- Published by Association for Computing Machinery (ACM)
- p. 79-81
Incorporating Code Structure and Ethics into CS1-CS2 Assignments
- 7 August 2023
- Published by Association for Computing Machinery (ACM)
- p. 79-81
Open AccessIncorporating Code Structure and Ethics into CS1-CS2 Assignments
- Open Access
- 2 March 2023
- Published by Association for Computing Machinery (ACM)
- p. 542-548
Use of an Anti-Pattern in CS2: Sequential if Statements with Exclusive Conditions
How can we teach students to use more readable code structures? How common is it for students to choose less readable (but still functional) alternatives? We explore these questions for a specific anti-pattern: using sequential if statements when conditions are exclusive (rather than using else-if or else). We created and validated an automated detector to identify this anti-pattern in student's code. Running the detector on 1,764 homework submissions (from 270 students in a CS2 class on data structures and algorithms) showed that this anti-pattern was common and varied by assignment: across 12 assignments, 3% to 50% of submissions used sequential ifs for exclusive cases. However, using this anti-pattern did not preclude using else-ifs: across assignments, up to 34% of the submissions used both forms. Further, students used sequential if statements in surprising ways, such as checking a condition and then the negation of that condition, indicating a more novice level of understanding than expected for an intermediate course. Hand-inspection of the detector-flagged cases suggests that sequential ifs for exclusive cases may be a code smell that can indicate larger problems with logic and abstraction.
- 2 March 2023
- Published by Association for Computing Machinery (ACM)
- p. 542-548
Open AccessUse of an Anti-Pattern in CS2: Sequential if Statements with Exclusive Conditions
How can we teach students to use more readable code structures? How common is it for students to choose less readable (but still functional) alternatives? We explore these questions for a specific anti-pattern: using sequential if statements when conditions are exclusive (rather than using else-if or else). We created and validated an automated detector to identify this anti-pattern in student's code. Running the detector on 1,764 homework submissions (from 270 students in a CS2 class on data structures and algorithms) showed that this anti-pattern was common and varied by assignment: across 12 assignments, 3% to 50% of submissions used sequential ifs for exclusive cases. However, using this anti-pattern did not preclude using else-ifs: across assignments, up to 34% of the submissions used both forms. Further, students used sequential if statements in surprising ways, such as checking a condition and then the negation of that condition, indicating a more novice level of understanding than expected for an intermediate course. Hand-inspection of the detector-flagged cases suggests that sequential ifs for exclusive cases may be a code smell that can indicate larger problems with logic and abstraction.