Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: A tutorial for Perl to teach Beginners

by gmpassos (Priest)
on Sep 07, 2004 at 00:19 UTC ( [id://388889]=note: print w/replies, xml ) Need Help??


in reply to A tutorial for Perl to teach Beginners

Is a good idea and any work on "How to teach a programming language" is important since no one in the world knows what is the best way to teach that.

The biggest question is that "programming language" is different to "know how to program". The 2 concepts can be similar in the 1st view, but actually are very different, since is much more easy to teach a programming language to who already knows other, but over the topic "how to program" we also have a lot of areas, like structured languages and the mature way to program, the Object Oriented Style.

Over the years I saw a lot of people learning different programming languages with different styles, and saw the final result. In my opinion, if you want to create a complete programmer, you should start to teach from the base, with a structured languages where is possible to know how the bases are built. We don't need to work with assemble code, but know how an enverioment without OO works and how to create complex algorithms is very important. So, in the structured level the student will learn algorithms.

Then, after learn the basics of algorithms, it can start to play with a well orgnized enverioment with a OO language. In this level it will need to learn how to make elegant codes, not only creating a well formated style to write the code, but in how to make interaction of each chunk of methods and classes. In the OO level the developer will learn discipline and organization.

Note that learn the basics of structured programming is important, but the student need to learn that we can't, actually we never should, use a pure structured program for production softwares. The structured level is just to learn how the things work and to not have a dumb programmer, that only knows the easy job, since we know that the easy job can't do everything, and the hard chunks of codes are small, but this small chunks make a good job and a real software. The structured level will also teach how to be creative, since we alwasy write complex codes and complex solutions on that.

In the university I saw teachers trying to teach programming languages directly with OO. Do that for people that never saw a programming language is a crime, since they will think too hard to program an will lost the motivation. Also I saw people that can learn programming languages directly in the OO level, but they never will be able to go to a lower level and create solutions that can't be resolved with a static and already built OO enverioment. We can't forget that OO was created to make structured codes more organized, were we can isolate each part of the solution, what opens the oportunity to reuse codes. So, the student need to know that structured code exists to know for what OO exists, since only a OO declaration do nothing, it just delcare a DATA structure, and methods, who really do the job, are small chunks of structured codes that work over this declared DATA.

I think that in the begin the biggest problems is to teach in a way that we create motivation for the students to learn this thing that 90% think that is too annoying. So, start to show the power to be able to create things that we always use, like some intercomunication software, were we send some MSG to another computer, making a simple chat. Also we can show how to work with the internet, let's say, get a Web page or build a dynamic page, and the list goes. So, never start showing boring and stupid things, 1st get the attention, than you start with the exercises. Is like to teach a musical instrument, first we get the attention with simple but interesting musics, than we past the exercises that will create the technic, and only after the technic we start to teach discipline with score.

So, you need to show the different levels of programming and I think that Perl is a good way to show all of this, since we are free to use or not all of this levels. We also are able to run our code in different OS, we have http://cpan.org, we are free to change, create and recreate Perl, etc...

I think that the final tip is that a programmer is always a developer of something. So, a developer need to be able to work alone, to learn by it self how to create a solution for the problems that it have. Some people are able to just get the problem and discover by it self that it need to learn language X, with the methodology Y, and resouces Z. But normal people need to have someone to show that X, Y and Z exists, how to use them, for what they exists and the list goes... So, be beware to not create dependent programmers, since a dependent programmer is like a musician that can't learn a new music by it self. Is someone closed in the world that someone taught to him, and won't be able to create new things, and for me a dependent programmer is for nothing, I just won't hire him.

Well, this is the basics of what I have experienced on teaching programming languages, and I holp that this can be useful. ;-P

Graciliano M. P.
"Creativity is the expression of the liberty".

  • Comment on Re: A tutorial for Perl to teach Beginners

Replies are listed 'Best First'.
Re^2: A tutorial for Perl to teach Beginners
by chanio (Priest) on Sep 07, 2004 at 03:32 UTC
    May I add the general concept that perl is a complex tool made simple for all purposes.

    It is very difficult to do complex things and yet be as simple as to do lots of useful things in only one line of code.

    Nowadays, Microsoft is proposing that their new 'revamped' software is going to make no distinctions whether it is working on the www or on a local computer. This has always been a choice with perl. It is so simple to use in a web server as it is to use it as a helping CLI tool to configure LINUX ini files, do powerful DOS commands, etc.

    One of perl's biggest targets might be to reach a point when you could do a lot of things by just writing a simple command.

    .{\('v')/}
    _`(___)' __________________________

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://388889]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others admiring the Monastery: (1)
As of 2024-04-25 00:04 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found