Asee peer logo

Improving introductory programming courses by using accurate metal models for the key abstractions.

Download Paper |


2017 FYEE Conference


Daytona Beach, Florida

Publication Date

August 6, 2017

Start Date

August 6, 2017

End Date

August 8, 2017

Conference Session

Issues in the First Year - Focus on Classroom Activities

Tagged Topic

FYEE Division - Paper Submission

Page Count


Permanent URL

Download Count


Request a correction

Paper Authors


Robert A Ward IV Everett Community College

visit author page

Robert Ward received his Bachelor of Science from Washington State University graduating summa cum laude. He served as the chair of WSU's ACM chapter and received the Outstanding Senior in Computer Science award.

He went on to his graduate work at University of Hawaii at Manoa and received his Master of Science in Computer Science. While at University of Hawaii he was a teaching assistant and developed a strong interest in Computer Science education, specifically introductory programming.

After completing his master degree he was adjunct instructor at Kapi‘olani Community College for introductory programming. He then went on to be a full-time instructor at Everett Community College in Everett, WA. He teaches introductory Java and C++ as well as advanced data structures.

visit author page

Download Paper |


Computer programming has become increasingly important to most science and engineering disciplines. Unfortunately, introductory programming courses historically have a high failure rate. In addition, it is vital that computer programming be accessible to a broader range of students. It is important to provide a more diverse group of students the foundation necessary to succeed in programming. The goal of this paper is to investigate solutions to improve the pass rate of introductory programming courses. These solutions should provide students with the foundation in the key concepts of programming that allow them to succeed in subsequent courses, should provide multiple practice opportunities to reinforce and automate skills, and should reduce cognitive load. This paper discusses each key abstraction and its mental model and how the abstraction is connected to the operation of a physical computer. Examples of the exercises used to reinforce these models are discussed. If we don’t provide a learner with an accurate mental model, they will create their own mental model, which is often inaccurate. As they learn more about the topic, their mental model will fail, and they are forced to create a new model to accommodate the new information. Students confronted with the need to rebuild the world view of how programs work often decide, “I just can’t do this” and drop out. If, instead, students had an accurate mental model from the outset, they could more easily assimilate new information and ideas and extending the existing model. Because the new information would still fit with their existing mental model there is less frustration, requiring less mental effort on the part of the learner and fewer barriers to continuing to study programming. To provide the introductory programming students with a sound foundation, we focus on providing accurate mental models for the basic abstractions of programming: variables, conditionals, loops, and function calls. Early in the introductory class, we introduce the concept of the fetch-decode-execute cycle to connect at a high level the operation of the CPU and program counter to the code. Each model is a given a direct connection to the deterministic nature and actual operation of a computer and to the machine code generated by source code. We couple this focus with multiple skill-building exercises on the abstractions. For each key abstraction a simplified, but accurate, mental model is provided to the learner which must be simple enough for an introductory student to understand, while being accurate enough to allow the student to assimilate new information into the model as they expand their understanding of programming. To help students understand the mental model, skill-building exercises are done in class to reinforce the concepts and to provide skill automation that reduce the overall cognitive load required to program. Reducing cognitive load is vital to being an effective programmer as complexity increases and by automating performance of certain operations through repeated practice, the student can limit expending cognitive resources on those operations and can focus on learning new concepts or extending old concepts in new ways.

Ward, R. A. (2017, August), Improving introductory programming courses by using accurate metal models for the key abstractions. Paper presented at 2017 FYEE Conference, Daytona Beach, Florida.

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: © 2017 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