Yesterday, I ran the introductory day at the start of our
Learning to Program in Ruby course.
Delegates come to us to learn a programming language with two different backgrounds - "I have programmed before in xxxxx and now I need to learn QWERTY" (the converters) and "what is this programming thing all about anyway" (the newcomers). The newcomers are typically nervous at their lack of knowledge, overawed by the people they'll meet who they feel are going to be much more clever, and worried about not 'getting it' in the new world of programming.
If - as a programmer - you're reading this, you'll know that the newcomers should not be nervous. The newcomer is no less bright - just less practised, and can and will pick up programming if they have an aptitude. The convertors were newcomers once, and understand very well indeed what the newcomer is going through - and want to help that newcomer. And the teacher (who was also a newcomer once) gets an immense satisfaction from helping the newcomer start from zero, and pick up some of the basic concepts and start plugging them together into usable, and then useful programs.
Don't get me wrong - the hardest courses to teach are the "complete novice" ones, but they are also so much more rewarding. I tend to end up writing brand new example code, showing the individuals on the course not only WHAT a program looks like but HOW it is reached. And each individual finds different things easy and difficult, so the examples vary every time.
The other great thing? "Get 'em early and they don't get bad habits". My "learning to program" days show not only the mechanism of programming and how it applies in a certain language, but also what is good and what is bad ... I can teach people that they should
comment their code well, that they should
plan what they're doing, that they should
write and test in stages, that
testing is important and that if they find themselves copying and pasting code
they should be structuring their code ... all of which go towards making code which will be
easy to maintain, which will
run consistently and which will tend to be
more reusable and
more reliable.
During yesterday, I developed a number of examples and I have added them to our web resources this morning. Some are dinky little examples to show the basic features and principles, others are somewhat longer to say "yes - we are headed to a wonderful destination here, even though we don't arrive until later in the week". And they also say "you, dear newcomer, will see how the things you learn on the first day are going to be an integral part of your live applications".
Here are those examples:
[link] First use of variables and calculations
[link] Simplest practical program - read from user, calculate, output result
[link] An example with a loop, showing how you should plan and document your code
[link] Naming a block of code - adding in structure and re-usability, and a first introduction to local variables and why that is a good thing
And some of the demonstrations of "where are we going with this ..."
[link] Read through a file and report on all lines matching a pattern, with management summary at the end
[link] Finding and matching various lines and keeping several counts
[link] Analysis of a large data file (web access log) which reports on the pattern of matching for the last 24 hours.
At the end of the day ... the final example produced some really useful results for me; I have wondered about the pattern of accesses to our servers over a 24 hour period, and this little program give me a profile for one day, and I can go on and extend it later ... no doubt I will be doing so, when I get the time (a.k.a. a month of Sundays!)
(written 2009-07-14, updated 2009-07-16)
2aef
Associated topics are indexed under
G302 - Well House Consultants - Coming to a course. [2835] A course is more than just a chap giving a lecture - (2010-06-28)
[2249] Public Transport from London to Melksham, Wiltshire - (2009-06-19)
[1996] Advise before my Apache / Tomcat course - (2009-01-16)
[1792] All the pieces fall into place - hotel and courses - (2008-09-10)
[952] Coming from London to Melksham by train for a course - (2006-11-28)
[933] Course Joining package - updated - (2006-11-20)
[898] Courses at Well House Manor - (2006-10-19)
[695] In the hospitality business - (2006-04-23)
[490] A new way to get lost - (2005-11-08)
[464] Technical Loneliness - (2005-10-14)
[306] Bristol Airport this morning, The Farm this evening. - (2005-05-09)
[264] 100% Training - (2005-04-01)
[2] Diary entry - 5th August 2004 - (2004-08-05)
Q100 - Object Orientation and General technical topics - Learning to Progam [4008] Reading and checking user inputs - first lessons - Ruby - (2013-02-17)
[3895] Flowchart to program - learning to program with Well House - (2012-10-14)
[3551] Some terms used in programming (Biased towards Python) - (2011-12-12)
[3120] Learning to write good programs in C and C++ - separating out repeated code - (2011-01-04)
[2973] Learning to program - where to start if you have never programmed before - (2010-09-28)
[2898] Programming Standards from the start! - (2010-08-02)
[2505] I almost put the bins out this morning - (2009-11-16)
[2504] Learning to program in ... - (2009-11-15)
[2326] Learn a new programming language this summer. - (2009-08-06)
[2294] Can you learn to program in 4 days? - (2009-07-16)
[2092] Tracking difficult bugs, the programmer / customer relationship - (2009-03-20)
[2048] Learning to program in PHP, Python, Java or Lua ... - (2009-02-19)
[2001] I have not programmed before, and need to learn - (2009-01-19)
[1985] Learning to program as a part of your job - (2009-01-10)
[1963] Best source to learn Java (or Perl or PHP or Python) - (2008-12-28)
[1605] Learning and understanding scripting programming techniques - (2008-04-08)
[116] The next generation of programmer - (2004-11-13)
R101 - Ruby - Introduction [2607] Answers on Ruby on Rails - (2010-01-30)
[2287] Learning to program in Ruby - examples of the programming basics - (2009-07-15)
[1887] Ruby Programming Course - Saturday and Sunday - (2008-11-16)
[1375] Python v Ruby - (2007-10-02)
[1302] Ruby, Ruby, Ruby. Rails, Rails, Rails. - (2007-08-13)
[1041] Learnt in London - Ruby, Martini, Coral and the Core - (2007-01-17)
[1027] Cue the music, I'm happy. - (2007-01-09)
[664] Ruby course - oops - it's not happening - (2006-04-01)
[550] 2006 - Making business a pleasure - (2006-01-01)
Some other Articles
Opening and reading files - the ruby fundamentalspre-Inaugural briefing - Melksham Community Area PartnershipWiltshire Community Area PartnershipsNew to programming? It is natural (but needless) for you to be nervousGreat new diagrams for our notes ... Python releasesStrings as collections in PythonEveryone is in the customer relations businessChecking robots.txt from PythonPython - using exceptions to set a fallback