How should I teach Computer Programming?
-
- Posts: 355
- Joined: May 29, 2015 20:37
How should I teach Computer Programming?
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.
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.
-
- Posts: 606
- Joined: Nov 28, 2012 1:27
- Location: CA, USA moving to WA, USA
- Contact:
Re: How should I teach Computer Programming?
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
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
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: How should I teach Computer Programming?
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.
.
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.
.
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: How should I teach Computer Programming?
.
Last edited by BasicCoder2 on May 31, 2017 5:14, edited 1 time in total.
Re: How should I teach Computer Programming?
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 :-)
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 :-)
-
- Posts: 355
- Joined: May 29, 2015 20:37
Re: How should I teach Computer Programming?
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!
Re: How should I teach Computer Programming?
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.
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.
-
- Posts: 3906
- Joined: Jan 01, 2009 7:03
- Location: Australia
Re: How should I teach Computer Programming?
Would like to learn or want to learn there is a difference.datwill310 wrote: It's just a subject somebody I know would like to learn.
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.
.
-
- Posts: 5494
- Joined: Sep 12, 2005 20:06
- Location: California
Re: How should I teach Computer Programming?
Go through other tutorials / courses and see how people are already doing this.
Re: How should I teach Computer Programming?
@ 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
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
Re: How should I teach Computer Programming?
That was a nice "proof".owen wrote: ... I was stunned yesterday upon realizing the sum of all numbers is a negative 1/12 ...
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.