How should I teach Computer Programming?

General discussion for topics related to the FreeBASIC project or its community.
Post Reply
datwill310
Posts: 355
Joined: May 29, 2015 20:37

How should I teach Computer Programming?

Post by datwill310 »

Hi all,

I guess this is more of a question for a community such as StackExchange, but I would like to have an idea on how to teach the basics of computer programming to somebody. Of course, I'm all for self-learning; this is and still is the main way I learn and develop as a programmer. However, me and lots of others required that extra "push" to get us started. Whether they be through personal tuition, or provided interactive tutorials, beginner-friendly textbooks or other tutorials.
I will be teaching FreeBASIC. This is not for a real classroom nor am I asking for help something I do as a payed job. It's just a subject somebody I know would like to learn. I know other languages such as Python would be better to learn if said person wanted to go further with computer programming (FreeBASIC, let's be honest, isn't used much in the industries which major in IT), but I don't know enough Python to effectively teach it.
What I'm specifically asking help for is the following:
1. Which concepts/areas of computer programming should I cover and in what order? This may or may not be influenced by the language I am teaching.
2. I am thinking of writing tutorials for the person to walk through. These include practise problems. What problems should I set for each area of programming? They will be algorithms the person should try to implement, and I'm leaning towards starting easy.
3. How could I orient my tutorials for extended learning?
4. Maybe you don't think FreeBASIC is a good choice for an absolute beginner (I should mention this ;])? Explain why and suggest a language which may be better for beginners.

Thanks for your time.
speedfixer
Posts: 606
Joined: Nov 28, 2012 1:27
Location: CA, USA moving to WA, USA
Contact:

Re: How should I teach Computer Programming?

Post by speedfixer »

My opinion:

First:
Two ways/attitudes to teach:

You are teaching programming, generally, or
you are teaching FreeBasic for someone to reach a goal

Either:

For either approach, a general discussion on each topic below, roughly in this order.

comments, notes, uniform style, comments and uniform style
Variables and types
operators
functions
scope
pointers

dividing tasks: do the job one-step-at-a-time
inclusion
<objects>
'There is NO rule that we ALWAYS follow.' (Not even: there can not be too many comments.)
'Teachers only teach what they know.'
'Teachers taught that the earth was flat. They were wrong.'


If your (only one) student has a specific goal, each topic should have a discussion showing how this topic is related to his goal, how this topic can be leveraged to reach his goal quicker, more effectively.
Specifically for FreeBasic, read all the current bugs present.
Read the forums every day; notice where other people have trouble, especially when a topic comes up over and over again - even if YOU have no trouble with it.

If this is for general teaching, classic examples need to be developed that highlight and exercise just that topic.

For general programming teaching, a tiny discussion about how alternatives and differences between languages alter style and philosophy of program structures.

Always, at each step, general pitfalls and most common errors should always be included. You don't want your student frustrated too often by tiny common errors everyone makes sooner or later.

Style is only important for history:

When you/anyone *changes* style - any later code can easily be mis-interpreted. When you have to modify or debug code later, that uniform style will make life much easier. (Each person will develop his own style.)

The above is at least DOUBLY true for comments mixed in with the code.


You have your style of expression, and if you are any good at all, it will change as your students change and you see your level of success at having a difficult concept accepted by each student.
Listen to the students.

just my opinion


Good Luck.

David
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: How should I teach Computer Programming?

Post by BasicCoder2 »

Franktic has already started a beginner project tutorial.
http://www.freebasic.net/forum/viewtopi ... 17&t=25233

That you are not fully up to speed with Python may be an advantage. You can teach yourself at the same time. FreeBasic is different enough from Python that you have to unlearn or relearn stuff if you move to Python. C is closer to FreeBasic. I am of course not talking about OOP which is often the starting point in C++ tutorials after the fundamentals of programming in any language are covered.
I would start with how data is entered, stored and used and the control structures required to do this.
.
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: How should I teach Computer Programming?

Post by BasicCoder2 »

.
Last edited by BasicCoder2 on May 31, 2017 5:14, edited 1 time in total.
dafhi
Posts: 1641
Joined: Jun 04, 2005 9:51

Re: How should I teach Computer Programming?

Post by dafhi »

love this topic :-) i needed that 'hold my hand' approach when i started. i took a VB class. i was so glad to finally know some programming, i made an 'app' in-class "learning visual basic"

i don't have any advice at this point but i will definitely be following this thread. i hope to learn python one day, but i've also been thinking about offering a programming course. shoot, my imagination is running wild now :-)
datwill310
Posts: 355
Joined: May 29, 2015 20:37

Re: How should I teach Computer Programming?

Post by datwill310 »

Thanks for the help so far! I'll look over each post on this thread as I begin to structure my tutorials. If I were to learn Python, I definitely wouldn't MOVE to Python, buts that's just a personal thing ;D! I'll look at the link you provided (BasicCoder2). And thanks David for your input!
owen
Posts: 555
Joined: Apr 19, 2006 10:55
Location: Kissimmee, FL
Contact:

Re: How should I teach Computer Programming?

Post by owen »

Jack wants to teach Jill how to program because Jill loves to play Jask's games...

Jack sugests Jill invent her own game.

Jill says well we'll need a new pail because this one has holes in it.

Jack says, actually that's perfect.

To be the teacher, it is helpful to draw off the students imagination initially. Throwing some holes (variables) in it might do the trick.

I think the 70's and 80's were a rare moment in time for learning how to program. I attempt to explain how to make a simple ping pong game but now days it does not captivate the students. Today their imaginations start with 3d and AI.
BasicCoder2
Posts: 3906
Joined: Jan 01, 2009 7:03
Location: Australia

Re: How should I teach Computer Programming?

Post by BasicCoder2 »

datwill310 wrote: It's just a subject somebody I know would like to learn.
Would like to learn or want to learn there is a difference.
I had a similar experience with two people wanting me to teach them programming but it became clear very quickly they had no passion or real interest in programming itself only the idea they could. One was a teacher who would have his wage increased if he had computer programming skills and another an avid game player who fancied the idea of being able to program.
You have to be careful not to project your likes or interests onto others that appear to have the same interest.
My interest in programming has only been an extension of an earlier hobby interest in electronics and automation including AI but if you really want to learn to program it is best to go back to school and join a proper computer programming class. I suspect the more advanced programmers on this forum have done computer science courses.
.
anonymous1337
Posts: 5494
Joined: Sep 12, 2005 20:06
Location: California

Re: How should I teach Computer Programming?

Post by anonymous1337 »

Go through other tutorials / courses and see how people are already doing this.
owen
Posts: 555
Joined: Apr 19, 2006 10:55
Location: Kissimmee, FL
Contact:

Re: How should I teach Computer Programming?

Post by owen »

@ anonymous1337
What you wrote http://www.freebasic.net/forum/viewtopi ... 46#p232346
was real, almost philosophical.
If not for you and others like you we wouldn't have other tutorials / courses to refer to. To that end I am thankful for the Freebasic community as a whole.

At its core, computer programming affords a quick fix to creativity even though it's just artificial.
Programming is about manipulating numbers and numbers themselves are just artificial. They are in our imagination.
I was stunned yesterday upon realizing the sum of all numbers is a negative 1/12
https://www.google.com/url?sa=t&rct=j&q ... zehpdPx6Wg
integer
Posts: 408
Joined: Feb 01, 2007 16:54
Location: usa

Re: How should I teach Computer Programming?

Post by integer »

owen wrote: ... I was stunned yesterday upon realizing the sum of all numbers is a negative 1/12 ...
That was a nice "proof".
If you flip a coin, normally it will land heads or tails, but since we don't know what the last one will be we'll just call it both.
So, on average, it will land on its edge.
Thus, if you flip pennies, nickles, dimes or euros, by the time you reach infinity, the coin will always land on it's edge.
Cute.
Post Reply