Asee peer logo

Improving Pedagogy of Computer Programming Through Orthogonal Skill Isolation

Download Paper |


2020 Fall ASEE Mid-Atlantic Section Meeting


Virtual (hosted by Stevens Institute of Technology)

Publication Date

November 7, 2020

Start Date

November 7, 2020

End Date

November 7, 2020

Page Count


Permanent URL

Download Count


Request a correction

Paper Authors


Dov B Kruger Stevens Institute of Technology (School of Engineering and Science) Orcid 16x16

visit author page

Dov Kruger has consulted and taught programming in industry for 20 years, moving back to his alma mater to teach and do research.
His primary research interests include secure, high-speed replacements for web programming, and computer-based education tools, particularly assessment.

visit author page


Gail P Baxter Stevens Institute of Technology

visit author page

Gail P. Baxter is the Co-Director, Center for Innovation in Engineering and Science Education (CIESE) at Stevens Institute of Technology. Baxter leads CIESE research and evaluation efforts and manages a program to support faculty adoption of evidence-based teaching practices in the core courses in the School of Engineering at Stevens. Before joining CIESE, Baxter was a Senior Survey Researcher at Mathematica Policy Research, Inc., Senior Research Scientist at Educational Testing Service, and an Assistant Professor in the Graduate School of Education at the University of Michigan. In addition, she served on National Academy of Sciences Committees on Foundations of Educational and Psychological Assessment and Evaluation of National and State Assessments of Educational Progress. She earned a PhD in Educational Psychology from UC Santa Barbara.

visit author page

Download Paper |


Computer architecture is a set of rules and methods that describe the functionality, organization, and implementation of computer systems. At the university level, undergraduate students are taught computer architecture so they are better able to: (1) debug their programs and (2) write more efficient programs given an understanding of how the computer works.

Computational thinking skills including decomposition, abstraction, pattern recognition and algorithms are important to beginner programmers even at the university level. Students must be able to construct a logical sequence of operations to accomplish a task. However, when faced with a highly complex language designed for programming efficiency, not ease of learning (such as C++ or assembler), it is also vital to understand the exact semantics of each operation. Because C++ and assembler are so complicated, students often make mistakes largely due to gaps in their knowledge of the language. This paper focuses on strategies for teaching programming in complicated languages, but the pedagogy of less-complicated mainstream languages such as Java and Python can benefit from some of the same approaches.

Research has shown that cognitive overload is one of the main barriers to learning programming. Even in a population of highly motivated engineering students, beginners are easily frustrated by the simplest of programs. Without an accurate mental model of how the computer actually works, beginners tend to use trial-and-error strategies often without success. Further, even when successful, these strategies do not generalize to other more complex programming tasks.

To help students learn a complex programming language, we created a set of exercises for each of four critical programming skills: syntax, semantics of basic operations, contextual knowledge (i.e. fill in missing symbols in a incomplete program snippet), and debugging (identify and correct errors). We call this orthogonal skill isolation analogous to the term orthogonality as used in mathematics -- each of the individual skills is independent of the others and can be split into separate exercises, reducing the cognitive overload and frustration for each programming exercise. This does not eliminate the need to write whole programs, just as giving spelling and vocabulary quizzes does not eliminate the need to practice writing essays.

Orthogonal skill isolation was implemented in a sophomore computer architecture course in which many students had little or no experience in C++ and/or assembler. After initially poor results on a midterm given prior to orthogonal skill isolation, dramatic improvements were demonstrated using orthogonal skills exercises to scaffold learning of each skill independently. Retest showed increased scores for all students.

Kruger, D. B., & Baxter, G. P. (2020, November), Improving Pedagogy of Computer Programming Through Orthogonal Skill Isolation Paper presented at 2020 Fall ASEE Mid-Atlantic Section Meeting, Virtual (hosted by Stevens Institute of Technology).

ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2020 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015