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 have a couple of friends interested in computer programming, but they're non-CS graduates; some of them have very little experience in software testing field (some of them took some basic software testing courses). I am going to be working with them on teaching basic computer programming, and computer science fundamentals (data structures etc).

My questions are;

  • What language should I start with?
  • What are essential computer science topics that I should cover before jumping them into computer programming?
  • What readings can I incorporate to make the topic interesting and non-overwhelming?
  • If we want to spend a year on it, what topics should take priority and must be covered in 12 months?

Again, these are non computer science folks, and I want to keep the learning as much fun as possible.

Thanks everyone.

share|improve this question

closed as off-topic by gnat, MichaelT, Bart van Ingen Schenau, Kilian Foth, ratchet freak Sep 16 at 9:36

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT, Bart van Ingen Schenau, Kilian Foth, ratchet freak
If this question can be reworded to fit the rules in the help center, please edit the question.

1  
This should help: stackoverflow.com/questions/3088/…;. –  Anna Lear Feb 13 '11 at 1:16
    
What is the ultimate goal here? Are they hobbyists or do they plan to make a career out of this? –  P.Brian.Mackey Feb 13 '11 at 1:48
    
They plan to make a career out of it. –  AbstractRated Feb 13 '11 at 1:50

6 Answers 6

up vote 4 down vote accepted

My 2-cents:

What language should I start with?

Perl, or actually, Python. In my experience they are the easiest to setup, pickup, and get moving in, while the underlying implementation of programming languages is abstracted away.

What are essential computer science topics that I should cover before jumping them into computer programming?

Before actually programming? I would go into basic programming constructs such as different variable types (or in the case of python and perl, different types of data), such as integers, floating point numbers, and strings, to start off with. Then move into control and flow constructs such as if-then-else statements and loops. These are essential to almost all modern programming languages. Then move into data structures later, although mention lists and arrays, since in python that's what you'll be using most.

What readings can I incorporate to make the topic interesting and non-overwhelming? If we want to spend a year on it, what topics should take priority and must be covered in 12 months?

After introducing them to a few languages and writing small programs in them (Hello World, adding numbers, manipulating strings, opening, reading, and writing files) have them choose a language they like best, and have them build something they like with it. Get them a book or provide online resource they can turn to for help.

Again, these are non computer science folks, and I want to keep the learning as much fun as possible.

Bring in as much (fun) reality as possible. Learning hashes (dictionaries)? Bring in basic cryptology. Learning trees? Bring in Facebook and friend networks. Learning algorithms? Write a program that guides the user to making a pizza (an algorithm is simply a recipe). Visualize data structures like trees whenever possible.

Once your friends are comfortable programming in a language of their choice, you have to let the "fun" part go a little bit in order to get into higher-level concepts. Programming is a lot of fun, but it isn't all fun, there are frustrations that can come up, just like in anything else you might learn.

share|improve this answer

I would go with Ruby. It is fun and you can do a lot of stuff fast. Or if you want to use a book look at "Head First programming" which uses Python, which is also a good choice.

If they are a math geek get "The Little Schemer" which is really a cute little book.

share|improve this answer

Have a look at Scratch - http://scratch.mit.edu/ - which allows you (as well as numerous school kids) to jump directly into programming.

Looks simple but allows for understanding multi-threaded programming, structures and most other complex stuff, and then continuing into actual programming when you know the needed mindset better.

share|improve this answer

Go with C or maybe Python. Only teach them the basic constructs such as if-else and for loops and then give them challenges to get answers out them. Do this for 3-4 months. If they are still interested, then move into more challenging stuff. Only start referring to books after this stage and that too only if they want to.
Books can make it feel a bit boring and technical. What you would need is to develop their interest and provide them a means to fulfill that.
Aqua has some good ideas about making it fun. But remember to go easy and go slow. Take up things that can be implemented without too much fuss or something which you have experience with. That is vital.

share|improve this answer

Avoid teaching computer science, alg's & data struct's, etc...Unless they are already math gurus these concepts will quickly sour all desire to program.

Programming professionally is not at all akin to academia. It's more focused on the customer and requirements than anything. Being that web dev is so popular (check your local area), HTML is a great place to start. HTML has a low barrier to entry both for difficulty and monetary investment. From there you can take them into javascript and finally onto a lower level lang. like .NET.

share|improve this answer
1  
really? algorithms maybe...but data structures? How on earth to you program effectively without any concept or understanding of data structures. How do even write code without first figuring out how to organize your data. –  Pemdas Feb 13 '11 at 3:10
    
Modern framworks abstract the data structs out sufficiently to perform most tasks to a customer acceptable level. Without a knowledge of fundamental concepts such as looping, variables or even the importance of code readability, its difficult to appreciate and understand advanced topics. Finally, there's no shortcut to a degree in computer science. There's a reason the above is not covered until after calculus, linear alg. etc. –  P.Brian.Mackey Feb 13 '11 at 4:07

If you don't explicitly want to choose a commercial language (C/C++/C#/PHP/Ruby/Java), and want to keep the level of fun, why not go with Logo?

share|improve this answer

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