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 [] 
Sent: 07 April 2009 10:50
To: Bennett Kankuzi
Cc: Ppig-Discuss-List
Subject: Re: Choice of introductory programming language to a freshman

    It indeed seems that there is no consensus over
    what is a good language to start studying computer

    I think that almost any language will do when only
    the basic things are taught. On the page
    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

    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

    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 <>:
>> 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 []
>> 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 
>> (, which uses a series of Scheme-based languages

>> explicitly designed for beginners. The TeachScheme, ReachJava!
>> ( 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 <>
>> Assistant Professor / Brigham Young University 
>> "The glory of God is Intelligence" - D&C 93

Reply via email to