Professional Documents
Culture Documents
teaching beginners to
code
Table of Contents:
Introduction
Pg 3
Chapter 1
Pg 4, Object-Oriented Vs Component-Oriented
Programming
Chapter 2
Pg 9, Programming languages
Chapter 3
Pg 17, Teaching Styles
Conclusion
Pg 21
Citations
Pg 22
Introduction
This guide was compiled as a source for future research into how to teach beginners
to code. I wish for you to use this guide as a way to delve deeper into the argument
surrounding the best way to teach a beginner to code. Following is a collection of
scholarly articles, videos, papers, books, and interviews. These will help explain how coding
has been taught and how each approach affects the student.
This guide will address many different ways in which one can teach coding. The
first chapter brings you through the differences between object-oriented programming and
component-oriented programming. Chapter two explores the different programming
languages commonly taught to beginners. Finally, chapter three will discuss the different
ways of learning to code from the difference between teaching top-down and bottom-up
to in a classroom with a peer.
This reader’s guide is not the end to all discussion on teaching beginners to
program but merely just another resource for future researchers. A bias to my research
that I may have is I have already learned java and some C++ two languages that are
object oriented and I was taught in a top-down approach. Not only this but my research
was focused in a way that I personally found interesting there are other ways in which
one may research this topic and many directions one may take with it. I hope this guide
will aid you in your studies and that it will possibly build on the current information on
this topic.
Chapter 1
Object-Oriented Vs Component-Oriented Programming
gives the coder different paths depending on which one they are taught
through. This chapter will explore the similarities and differences of these
languages which branch off of each. For this chapter, I will be discussing the
beginner may become frustrated and find it challenging. He goes over how
although learning to code with an object oriented language like java or C++ is
difficult, in the long run the person learning to code will be better off when they go
to learn their next language. By learning through object oriented programming the
user will have already met with some the most difficult issues they will face. Not
only this but he asks the reader if OOP (object-oriented programming) is truly the
Assessing the dominance of OOP, we have to watch out for proxies. The
extensive use of languages that support OOP proves nothing, because
languages are chosen for a myriad of reasons, not necessarily for their
suitability for OOP, nor for the suitability of OOP itself. Similarly, the use of
a CASE tool that supports OOP is another proxy; these tools might just be
convenient and effective for expressing the software design of a system,
whether OOP is being used or not. Furthermore, many practices associated
with OOP, such as decomposing software into modules and separating the
interface from the implementation, are not limited to OOP; they are simply
good software practice and have been supported by modern programming
languages and systems for years. (Mordechai, 32)
In the quote above Mordechai discusses why he believes that OOP is commonly
considered the most common. He describes how many of the languages that branch
off of OOP are supported because of good software practice instead of the
programmer themself. By doing this he opens the reader up to question OOP and to
listen to his arguments about the matter. He believes that programming languages
are chosen for a multitude of reasons and that one should not write some off just
arguments for OOP. He says that OOP facilitates reuse. Since OOP may be reused
by the user this means that one will not need to spend countless hours rewriting the
same code to get the same output just with different objects. He also discusses the
drawbacks in reusing code with OOP he explains how when one encapsulates
becomes nearly
code.
Crnkovic, Almeida and Santana, Neto and Paulo Mota and Cavalcanti, Cerqueira
programming languages like COM, J2EE, CORBA, and .NET. It also discusses
how these languages give the infrastructure to connect binary parts seamlessly.
Finally, the article describes how the main difference between the component-
oriented languages is the ease in which they allow the user to connect the binary
components.
Component-oriented programming is a technique of developing software by
combining pre-existing and new components, the writers use the example of how
this is much like how automobiles are built from other components. Software
C# supports component-
oriented programming
properties, methods, events, and attributes thus, allowing self-contained and self-
interfaces) and most importantly binary re-usability. With this being said some may
argue that it functions much like OOP just without objects to throw the program
them in the future when expanding their knowledge and when learning they will
arguments for either OOP or component oriented programming. In the first article
the writer brings the reader to his side by bringing up a negative about OOP then
arguing for how that negative may aid the argument for OOP. He makes the reader
think more in depth about the topic he is presenting and then he convinces them to
side with him. In the second article the authors took a more studious approach to
the first article, primarily presented their ideas on which type is better through facts
and not arguments. Both articles presented information on both OOP and
component based then went off with the style they prefered for their articles.
Chapter 2
Programming languages
programming and component based programming. Not only did you learn
about those you also heard of some coding languages that branch off of
them. In this chapter, with help from four sources a article, two books, and a
Interface building. They touch on how it uses variables throughout the language
and how they are defined using the assignment operator, =. The professors do note
that MATLAB is a weak programming language because types are not directly
converted.
"Variables within this language can be assigned without declaring their type,
unless they are to be treated as symbolic objects, and that their type can
change. Values can come from constants, from computation involving values
of other variables, or from the output of a function.“ (Fitzle 2018)
They accept that the language does have faults but they stick to their view of it
being the best language for beginners to learn to code on. The professors argument
was persuasive in the sense that it got the audience thinking about why they should
use their program and the language that they chose. Some points on why they
chose this language were compelling because they showed how easy it is to use
this language and also how easy it is to learn it. Below is an example of a simple
language. This unlike the other sources for programs did not specify whether the
assume what the language is and from what I gathered, this is a component based
programming language.
Mayers (1988) book helps the reader to better understand LOGO and the
syntax of it. This book looks into coding being taught in a typical school
environment along with issues the teachers will face when attempting to show
motion by imagining what they would do if they were the turtle. He believed that
by allowing the student to have a visual it would help them better understand how
every line of code affects the turtles output. By allowing the student to see this
depiction as they code they don’t have to guess and hope that the final product is
correct mathematically along with bug free. Below is an example of LOGO and to
Forward 90
Forward 55
RT 66
Forward 24
Forward 24
RT 65
RT 65
Forward 23
RT 62
Forward 123
Forward 54
}
I found it interesting how the primary language in the 80s was C# which LOGO
came from, LOGO was a programming language that was taught using turtles that
outputted lines kind of like drawings. I found this interesting because the UNCC
Computing department uses java and we initially learned to code using depictions
of turtles that drew lines on the screen. This book was useful because the
developers to Windows. If it were not for finding this book I would not have had as
much insight into how interconnected each of the languages are. This book
Sweigart's (2013) book describes what Python is and how one may learn to
use it. Not only does this book discuss what Python is it also shows the reader how
to hack with it but that part I will not be discussing this within this readers guide.
want to learn Python. Not only does he show the positives of Python but he also
several issues with the design of the language in the past. Because it is dynamically
typed, it requires more testing and has errors that only show up at runtime. By
pointing out flaws of Python the reader will be able to make a sound decision on a
Python.
This source is biased towards Python in the sense that the writer believes that
Python is the best language for beginners to learn how to program because it is
simple and readable. Not only this but it is also a powerful programming language
Python he fails to discuss other languages like many of my other sources. This
language to get more people interested. This book changes my view on Python
because before reading this I had not heard anything about this language. By
Leeman and Glass (2007) their article discusses how they investigated the
use of the simulated robot environment and an extended artificial life simulation
using the same environment in teaching of Java programming to first year students.
environments for students who were taking a first year object oriented
programming module and, with the exception of these exercises, had been set more
traditional exercises in previous practical sessions. They also discussed why they
chose java as the language the students would learn in these exercises. Leeman and
assumes the programmer is not that smart or careful, so programmers will be less
likely to make a mistake when coding Java apps. Below is an example of the java
Output
Hello, World
They also discussed some difficulties beginners may face when learning this
language. Java is very stubborn, which means the coder needs to write a lot of code
trying to convince the language to build a feature. Thus, one may need to spend a
lot of time coding before they can get a working app. This is found to be
demotivating for coding beginners and can cause them to give up. This study along
with my other sources in this chapter focused not only on the language but also the
way that they had decided to teach the students how to code.
In conclusion for this chapter it doesn't really matter what language one
starts with, because the principles of programming are the same, and as long as one
learns those, they can learn other programming languages later. Yes, each of the
languages that were discussed in this chapter all have their own quirks that may
make it easier for a student to learn to code on but all and all they will learn the
same skills. The only difference or issue that may arrive could possibly be what
can easily learn java after first learning C++ sure one language may be more
popular in the workforce, but the programmer will still learn the proper way to
code.
Chapter 3
Teaching Styles
In the last two chapters you learned more about object oriented
only did you learn about those you also heard of some ways that these
languages are taught. In this chapter, with help from four sources two
Michael Lea (2016) This newspaper article goes into how they teach the
participants in the short period of time they are there to learn. Not only do they
discuss how they help the participants how to code using JavaScript but they also
show the hands-on, project-driven aspect of it. They feel that by showing how one
can have fun with programming it will encourage the participants to seek out
teach beginner coders. The most compelling part about this piece is how much of a
difference their program is making for the participants. This article much like some
of the others I have looked into is primarily focused on one language and how they
Daisuke and Yamaura (2014) This article is persuasive through their study
on teaching beginners and they show the difference between the quality of the code
from the top-down and the bottom up approaches. By being able to see the
differences in the students code helps the reader know how each method teaches
the student different skills. Some of these skills are only picked up by the top
down, one being how comments and spacing should look like. Through the top
down approach the student can visually see how the code is supposed to work. The
bottom up approach typically showed the student the proper syntax of the language
student.
fun. He believes it is good for lots of things. He described how sometimes you just
need to think and want to be left alone and not have to worry about working with
teaching styles did not change much but now I have a better insight into teaching
oneself how to code without a teacher. I found some of the tips that the
these interviews are there are some things that are missing like what they would
personally recommend for beginner coders.
Emurians (2010) study into students using online resources to learn to code
The data collected from the study is presented to show the responses of a class of
students to the use of the tutoring system. He argues that by adopting this
argument was persuasive because he backed up all his points with data. Just as he
discussed java and the outcomes of his teaching style he did miss some important
aspects like a data set that properly showed who was a true beginner vs someone
In conclusion, all four of these sources discussed the way they each believes
to be the best way to learn to code. Some discuss personal examples on how the
way they learned how to code affected them. Others showed data on how their way
of teaching beginners to code went up against others. I found it interesting that all
styles or languages are more common but that doesn’t mean that that one way is the way that the
student should learn to code. In the end beginners just want to learn how to do something that they
were not able to do previously and the method that they learn it doesn’t impact them that much.
regards to what is the best way to teach beginners to code. For example, I wonder if females working
with other females and males working with other males would impact how fast they learn to code? I
also wish to find more information about the difference between the top-down and bottom-up
approaches. I hope that the topics discussed in this reader’s guide has allowed you to think about
some of the languages, approaches, and techniques to consider when teaching a new student how to
code.
Citations
Ben-Ari, Mordechai. Objects never?: well, hardly ever, Communications of the
ACM, 01 September 2010, Vol.53(9), pp.32-35
Leeman, R. Mark, and David H. Glass. “Teaching Java with Robots and Artificial
Life.” Innovation in Teaching and Learning in Information and Computer
Sciences, vol. 6, no. 4, 2007, pp. 23–34.
Mayer, Richard E. Teaching and Learning Computer Programming : Multiple
Research Perspectives. L. Erlbaum Associates, 1988.
Vale, Tassio, and Crnkovic, Ivica de Almeida and Eduardo Santana, Silveira Neto
and Paulo Anselmo Da Mota and Cavalcanti, Yguaratã Cerqueira and Meira, Silvio
Romero de Lemos. Twenty-eight years of component-based software engineering,
The Journal of Systems & Software, January 2016, Vol.111, pp.128-148.