Thanks for the comment, Walter.
My words in the previous message were, as usual,
inaccurate. I should have said that it is important
that a student knows how a computer works in a
LOGICAL sense. This means, for example, that everything is stored
as binary numbers in the registers and in the main
memory, and that the contents of a memory location
are lost when something new is written into the
memory location. It is not absolutely necessary
to understand the electronic details of a
computer.
Walter Milner wrote:
So Kari raises a corollary - to what extent does it matter what mental
model of a computer the student has?
But this is also on the dimension of abstraction. For example, 'how main
memory works'. This might be at the level of addresses, binary contents
and read/write operations. Or at the more concrete level of logic gates,
or below that, semi-conductor fabrication. Or above all of it, variables
which persist values during execution. Which is best?
-----Original Message-----
From: Kari Laitinen [mailto:[email protected]]
Sent: 07 April 2009 10:50
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a freshman
class
It indeed seems that there is no consensus over
what is a good language to start studying computer
programming.
I think that almost any language will do when only
the basic things are taught. On the page
http://www.naturalprogramming.com/all_example_programs.html
I provide about 100 simple programs written with four
different languages. If a student studies, say,
the Java programs, he or she should be able to easily
move to other languages by using different program
versions.
Another important question is that what a student
should know before he or she starts studying
computer programming. I think it is important to
understand how a COMPUTER works before one starts
studying COMPUTER programming. To study the basics
of computing, I provide a very simple computer at
http://www.naturalprogramming.com/IC8/index_for_ic8.html
With this simple computer it is possible, in less than
10 hours, to explain
- how the main memory works
- how machine instructions are executed
- what compilation means
- why high-level languages should be favored
We have been teaching this computer at our school
for three years before the actual programming courses.
Most students think that it is a useful tool.
Later on I hope to be able to provide more accurate
data concerning how the ability to understand this
imaginary computer corresponds with the ability to
become a good programmer.
Kari Laitinen
School of Engineering
Oulu University of Applied Sciences, Finland
Bennett Kankuzi wrote:
Dear All,
Many thanks to everyone for taking your time to air out your views on
the question I had posted on the forum. For now I will use C since the
students will need to learn the art of problem solving but most
importantly they also need to learn the basics of programming like
data types, looping constructs, pointers etc. My hope is that later
on they shall be able to transfer this basic programming knowledge in
learning other languages like Java and C++.
I must also say that from what I get across this thread of discussion,
Scheme and Python seem also to be good alternatives. I will definitely
try them in the forthcoming semesters. I have done a bit of
programming in Python and PERL on a Unix system but not yet tried
Scheme although it seems to be a very good alternative.
Once again many thanks for the insights!
Bennett
2009/4/6 Walter Milner <[email protected]>:
A question to the OP: is it true that the choice must be between C,
C++ and Java? Or might other languages be considered?
-----Original Message-----
From: Jay McCarthy [mailto:[email protected]]
Sent: 06 April 2009 13:21
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a
freshman class
I've had a lot of success using the How to Design Programs textbook
(http://www.htdp.org/), which uses a series of Scheme-based languages
explicitly designed for beginners. The TeachScheme, ReachJava!
(http://www.teach-scheme.org/) curriculum uses this book in a
two-semester sequence where students learn programming in the first
semester with HtDP and these Scheme-derived languages, then
transition to Java and objects in the second semester.
I'm happy to provide additional help getting you running in this
curriculum if you'd like.
Jay McCarthy
--
Jay McCarthy <[email protected]>
Assistant Professor / Brigham Young University
http://teammccarthy.org/jay
"The glory of God is Intelligence" - D&C 93