You are on page 1of 4



By Tristan E. Anderson, Computer Engineering Junior


1.1 Purpose

I propose instructors teaching the C programming language more thoroughly explain computer
memory addressing before introducing pointers.

1.2 Background

I started my Computer Engineering degree at Iowa State University by taking Intro to Problem
Solving (using C), which I will refer to as CPRE 185. According to the course calendar, CPRE
185 covers the basics of the C programming language, starting from a basic introduction and
ending with memory pointers.[1] Interestingly, despite learning memory pointers in CPRE 185, I
did not go in-depth with memory until Embedded Systems I: Introduction, which I will refer to
as CPRE 288. Many of my peers and I struggled with pointers during our time in CPRE 185, and
struggled greatly with exams and homework surrounding the topic. Although the things we learn
about memory in CPRE 288 are crucial to the class and would not be replaced by introductory
knowledge in CPRE 185, I believe it is still important knowledge for learning pointers and
should therefore be taught in CPRE 185 as well as CPRE 288.

1.3 Scope

This proposal covers which aspects of memory addressing are important to learning pointers, as
well as why those aspects are important. It covers why and how these instructions can be taught
during half of a single CPRE 185 lecture. This proposal will not cover in-depth instruction of
how to teach pointers specifically, as the instruction being proposed is only an addition to, and
not a replacement of, the actual teaching of the pointers.


2.1 Approach

My proposed teaching of memory concepts will give introductory students more background
information that will help them better understand pointers. I would add a single half-lecture of
detailed information on the layout of memory in a computer and how that memory is addressed.
This half-lecture will take place immediately before students are introduced to memory pointers
to make the students aware that these two topics are relevant to each other. The focus of this
lecture will be on CPU registers, as registers are easier to define than general-purpose memory,
while being an almost identical concept. On top of this, there are fewer registers within a CPU
then there are memory addresses in a computer. This will help students become less confused
with the new concept. Once the concept of registers is taught, the professor can go on to explain
how the knowledge the students just gained can be applied to general-purpose memory, and
finally explaining how pointers can be used to manipulate that memory.

2.2 Result

This solution will provide students with knowledge that is not normally gained until their second
year, but can be very beneficial to know during their first year. In addition, giving this basic
instruction during their first year will make it less foreign to students when they enter CPRE 288
in their second year. Although not the main goal of this proposal, helping students succeed in
CPRE 288 is a legitimate and useful side effect of this knowledge.

2.3 Statement of Work

Since the material for a lecture such as this is already available from other courses at Iowa State
University, all of the work will take place during the actual lecture and not during preparation.
The proposed half-lecture would introduce the basics of memory by:

1. Introducing the concept of CPU registers. (5 minutes)

2. Explaining the difference between 32-bit versus 64-bit registers. (2 minutes)
3. Discussing the types of data that can be stored in registers and in what amount they can be
stored. (5 minutes)
4. Explain how registers can be compared to general-purpose memory. (2 minutes)
5. Explain the advantages of being able to access this memory and edit it. (3 minutes)
6. Describe cases where editing the memory directly is more efficient than editing the
corresponding variables. (5 minutes)

Following this 22-minute introduction, the professor can transition into his normal instruction on
memory pointers.


3.1 Personnel

According to the Iowa State University Schedule of Classes, Introduction to Problem Solving
(using C) is taught by two different professors, Thomas Earl Daniels and Swamy Dhoss
Ponpandi [2]. Both Daniels and Ponpandi are Ph.D. recipients, Daniles from Purdue
University[3] and Ponpandi from Iowa State University[4].

3.2 Facilities and Equipment

The proposed instruction does not require any additional facilities nor does it require any
additional equipment. It can be done in the same lecture hall as normal instruction using the
same presentation equipment. Programs using memory pointers can be compiled and run on
Windows and UNIX using GCC, the primary C compiler used at Iowa State University.

4.1 Time

According to the Iowa State University Schedule of Classes, Ponpandi is currently teaching 35
credits worth of classes; 12 credits of those 35 are CPRE 185 sections. The Iowa State University
Academic Calendar shows that a class with 3 lectures weekly will meet approximately 44 times
during the semester. Using half of a lecture would take approximately 1.1364% of a courses
time. Since 34.3% of Ponpandi’s classes are CPRE 185, in total this half-lecture would account
for .3896% of his teaching time. Applying this same math to Daniles shows that 45.7% of his
teaching is CPRE 185 classes, so this instruction would account for .5188% of his teaching time.

4.2 Fiscal

According to The Des Moines Register’s Database of State Employee Salaries, Ponpandi is paid
$63,750.00 annually by the University. Taking .3896% of this salary shows that the University
would pay Ponpandi $248.37 for this instruction. Applying this math to Daniels’ $91,196 annual
salary, we see that the University would owe Daniles $567.87 for the instruction. In total, this
instruction would cost the University $816.24.


5.1 Summary

Memory pointers are an important part of the C programming language, but most of my peers
struggled to learn them effectively during our first exposure to them in CPRE 185. It was not
until CPRE 288 that my peers and I gained a complete understanding of the use and effectiveness
of memory pointers. Due to this, I propose that some instruction from CPRE 288 is to be taught
in CPRE 185 to give students a better understanding of the theory behind what they are being

5.2 Contact

For more information on this proposal and the topic being discussed, contact me at, or call (651)-592-5863.

5.3 Works Cited