Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I want to be very specific in my question to avoid duplicate question. Hopefully this is adequate. I am working with non-programmers on a project. They are adult and in IT but they may not have the math background or any programming or heavy computer experience. What are the quickest ways to teach them programming concepts. Just the concepts so that they quickly get programming (as much as they can). Let's say that you have 2 weeks to understand X programming language oriented technology. And these are adults not students.

What are some of the best ways for them to understand some of those concepts? What are some solid techniques that really help a non-programmer get the big picture quickly? And I was trying to avoid talking about specific language implementations.

Notes: I see two major hurdles with non-programmers, (1) They don't understand what a computer really is. To them, it may seem like a magical device. (2) They don't have the time to hack out or even learn programming. There are just some concepts like recursion or understanding data structures that may take at least one all-nighter. They don't have the time to debug and test out a solution.

I have worked with people and gone through a programming task (editing properties) and gone through that task step-by-step and asked them to repeat those steps exactly. This works but once they miss a step, then they can't recover. Basically, they aren't understanding what is going on.

share

migration rejected from stackoverflow.com Jul 31 '13 at 11:51

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as too broad by gnat, Dan Pichelman, MichaelT, BЈовић, Bart van Ingen Schenau Jul 31 '13 at 11:51

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
2 weeks? Teach them Python - oh, and pray. –  Matt Ball Apr 21 '11 at 14:21
2  
Exactly what are you trying to accomplish? What specific skills or concepts should your students leave with? This is particularly important for such a slow course. –  David Thornley Apr 21 '11 at 15:03
1  
Maybe you can't? –  Job Apr 21 '11 at 16:18
    
What are they expecting to get out of it? Are they asking you to teach them, or did you decide you needed to teach them? –  John Bode Apr 21 '11 at 16:19
    
What is the primary technology that they need this for and what are they going to be doing with it? i.e. writing utilities to manipulate Active Directory? Writing Excel Macros for sales forecasts? –  Dave Wise Apr 21 '11 at 16:29
show 2 more comments

8 Answers 8

up vote 5 down vote accepted

As a former HS and College computer science teacher I'm afraid that you're on a bit of a fool's errand. Their lack of background necessitates a slow process of laying a conceptual foundation. I work shoulder to should with "IT" folks everyday and I can attest to the fact that the gulf between us in not trivial.

What are you trying to accomplish? What are you expecting them to be able to do at the end of the two weeks?

The idea of doing this all in a completely conceptual way, w/o letting them get the "psychological paycheck" of seeing their efforts accomplishing something on the screen is not going to work.

Teach them branching and looping with something like Raptor: http://raptor.martincarlisle.com/ If they're from the business you can also use Excel for if/thens. (Teach from the familiar to the new.) Just b/c they're adults don't be afraid to use something kid-friendly like Scratch or Robomind. (They will secretly like it.)

Then ease into something more complex. I've had great success to with VB.NET and Python. The Intellisense in Visual Studio sounds like just what the doctor ordered. It can hamper a real coder, but it is incredible at giving a quick feeling of confidence to a novice.

Do a bit of lecture and then allow time to practice with it. Ensure that the reinforment activity can be completed in the time alloted. If they don't get 'a' and 'b' builds on 'a' - you are wasting your time.

I've sat through very expensive, week-long "trainings" on several occasions. Professions will listen politely, but try as they might, they cannot escape from the fundamental laws of learning. We learn iteratively, slowly buidling "schema" on which we hang our new knowledge "bits". Any attempt to brute-force through this barrier is doomed to failure.

If you are a very good teacher and committed to building lessons instead of lecturing endlessly I'd say that you could make some good progress in 2 weeks, but I think that recursion might be at the outside of what they can take in depending on the level of mastery that you are aiming for.

share
    
This is just about the coolest thing since sliced bread for programming visualization: cs.joensuu.fi/jeliot (for java) –  Trey Carroll Apr 21 '11 at 15:14
    
That is why I brought up the question. The gulf is pretty big but I was curious what you think bridges the gulf. The goal would be to teach someone that hasn't done programming to use Perl or Python to look for any patterns in a log file as opposed to manually do it. Also, the may use similar skills with VB macros to customize excel spreadsheets. –  berlinbrown2 Apr 21 '11 at 16:19
    
Also, another point in my question, I wanted to discuss how to describe a computer and computing such that they understand...what a program is? –  berlinbrown2 Apr 21 '11 at 16:20
    
The only half factetious answer to the "bridging the gulf" question is "a Business Analyst". :) Thanks for the context. I think that using a "tips and tricks" approach to solving a familiar problem in their paradigm would be best. What are they doing manually in Excel that you can do effortlessly with a Macro. Once they see the value they'll buy in. Also, if you have access to a Sharepoint environment you could show them how to use a View to refine a list. –  Trey Carroll Apr 21 '11 at 16:44
    
You are a teacher and I have noticed a lot of responses about specific programming languages implementations, but what do you think about "generic" computing concepts. How do you describe that and what is something that really should be covered. Computer memory is big, ram, cpu, etc. –  berlinbrown2 Apr 21 '11 at 19:29
add comment

What are some of the best ways for them to understand some of those concepts?

Lots of exercises.

What are some solid techniques that really help a non-programmer get the big picture quickly?

Lots of exercises. The "big picture" emerges after people synthesize and integrate a lot of details.

The forest emerges after walking among the trees.

And I was trying to avoid talking about specific language implementations.

Poor policy. Hands-on work in a specific language is the only way to understand programming.

I see two major hurdles with non-programmers, (1) They don't understand what a computer really is. To them, it may seem like a magical device.

Largely false.

(2) They don't have the time to hack out or even learn programming.

They are taking the course, aren't they?

A 2-week course is not 80 hours of you talking. It's less than 20 hours of you talking and at least 60 hours of helping them do the exercises and assignments in a classroom where you walk around and help them.

There are just some concepts like recursion or understanding data structures that may take at least one all-nighter. They don't have the time to debug and test out a solution.

False.

They don't need to learn recursion in a two-week intro to programming for non-programmers. Numerous professionals don't understand recursion. Some languages (i.e. COBOL) don't even support it.

Data structures are pretty trivial in most OO languages like Python. Indeed, they're so trivial that you should be covering them about day 3.

There's no all-nighter involved.

share
    
It isn't a course. I am just talking about other people in the IT department that need to use programming languages and other tools to do their work. –  berlinbrown2 Apr 21 '11 at 14:46
    
@Berlin Brown: Either it's a course with a syllabus (i.e., a meeting with an agenda) or it's just social. –  S.Lott Apr 21 '11 at 14:48
    
If you are paid to use a programming like Perl or Python or something else to complete task and it isn't outside of a class, that isn't social? –  berlinbrown2 Apr 21 '11 at 14:53
    
@Berlin Brown: I can't parse your comment. Too many negatives. If you're going to teach programming, you must have some kind of outline or syllabus or agenda. That makes it a course. I can't see any possible alternative. If there's no outline (or syllabus or agenda) then it must be a purely social gathering with no particular knowledge objectives or new skills. In which case, don't worry. Have a nice time with them. –  S.Lott Apr 21 '11 at 14:56
1  
I'll just point out that for some people, the "big picture" emerges after they synthesize and integrate a lot of details. For others, the details don't make any sense unless they have a "big picture" framework to hang the details on. serc.carleton.edu/NAGTWorkshops/earlycareer/teaching/… –  Gilbert Le Blanc Apr 21 '11 at 18:33
show 2 more comments

It's going to be a monumental task I can say that for sure, First thing I'd recommend would be to have a good teacher by teacher i mean someone who is really good in programming and who is also very good in expressing his thought process very clearly and sound. In our terms the best abilities of Developer and business analyst put together.

Two weeks is too little a time to learn any programming. If you were to make them pick up the basic loops, conditions and statements I think two weeks would suffice. More practical examples would help greatly and how well the person who teaches paces the lecture is the key factor. As a typical adult I'd imagine them getting bored in those post lunch sessions if they lose interest in the lecture.I'd recommend a hands on session in the afternoon keeping the concepts to day time.

It should be more interactive, real life examples for using the loops and statements and making the curriculum more suited to what they work in their daily day to day life, for instance i had the opportunity to teach little kids about logic and programming and the analogy for loops with chocolates and ice cream helped a whole lot greatly and they were glued to the entire lecture. If something along those lines could be worked out for these lectures it would help a whole deal. I am focusing on the sustaining the interest of the audience rather than the actual coursework.

Finally it all boils down to the individual person rather, For concepts like recursion its harder to teach and these are something which the individual figures out the best part(aha moment is enjoyed that way) and videos illustrating recursion flow could help much here.

Teaching some functional programming language would help a whole lot for starters. I'd always go for a high level language like C#, but keep the lectures clear off pointers :)

With a good teacher task becomes real easy!

share
    
Good answer. If you could highlight one thing in your description of "programming", what would that be? Is there some aha concept that really breaks down the programming process. For me, I might use the concept of interpreter and compilation and that transformation into computer instructions or processing. –  berlinbrown2 Apr 21 '11 at 14:55
    
You meant for teaching perspective or was it intended for me? –  Dredd Apr 21 '11 at 15:06
add comment

Try processing, it's a framework built upon java made for designers that don't know anything about programming.

You can bring concepts step by step and they can start making very funny things from scratch.

It is also ported to javascript (see processing.js).

share
add comment

Start a small but motivating project with them that includes what you want to teach, yet is simple enough for them to be able to recover from mistakes. It has to be interesting so they will want to learn more and spend time on it. Eye candy'd stuff is usually a winner here.

Supply them with simple documentation about what they'll need to do without holding their hand through it. For example, you might want to make it obvious they need to use recursion at some point, but instead of giving them the implementation, give them a short lesson about it, some written documentation and let them get their hands dirty.

Also, use a high level language in your lessons to avoid the inconvenient low-level stuff. I'd personally go with C#, Java or Python but it's ultimately your choice.

EDIT: It'll be hard, two weeks is really not a lot, but I think you can get some serious progress going on if you can get them to enjoy what you teach and manage to keep them interested.

share
add comment

I would consider teaching Lua, which is my favorite in this area:

  • The amount of required reading is small (less than 20 pages regarding basic concepts in the reference manual). You're ready to start after that.
  • Syntax is very easy, consistent and easy to the eye. Nothing to be afraid of.
  • The language features "advanced" or "modern" (whatever that means) like garbage collection, built-in dictionaries and functions as first class objects.

All in all it has the advantage to get you working very quickly without having to learn much up front.

I read "Structure and Interpretation of Computer Programs" recently and began to translate many examples from Scheme to Lua in my mind while reading (not completely, just as an idea). This book may not be suited for your planned introduction to programming, but this experience let me have the impression that Lua would be a decent language to start programming with.

share
add comment

You could do worse than try Learn Python The Hard Way, a free programming book for the absolute beginner.

From the website:

The book is very simple:

  • 52 exercises in all.

  • 26 cover just input/output, variables, and functions.

  • 26 cover logic (boolean algebra, if-statements, while-loops, etc.)

Each exercise is one or two pages and follows the exact same format. You type each one in (no copy-paste!), make it run, do the extra credit, and then move on. If you get stuck, at least type it in and skip the extra credit for later.

share
add comment

By far, the fastest way I've found to teach adults the concepts of programming is Excel. Start with built-in functions. Get them to understand the purpose of functions, If/Then statements, outputting modified results (Round()), etc. One they've grasped this, you can move into UDFs in VBA and show them loops and the concept of an object model.

Granted, this is all more about scripting and tasks/macros, but I don't believe you're going to get very far with OOP or functional programming in 2 weeks. Fundamentally, they need to know about the automation benefits of programming first.

Just as important, make the topic relevant for them. A mortgage calculator, an expense report, balance checkbook, etc. Something like that. If the topic is something as irrelevant as "hello world", it's meaningless for the students and their brains check out.

share
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.