PDA

View Full Version : Making a blog teaching how to program, need some advice



sapo
January 23rd, 2007, 12:43 PM
Hi guys, last week i started a blog and I'm posting a lesson per day teaching how to program.

At first the idea was to teach people that programing isn't about the language, and if you can understand on language it is easy for you to understand another, so all the lessons so far teach the same thing in Python and C# and also I'm explaining why and not just throwing code on the readers.

But after receiving some feedback from my friends, they say that it gets confusing when i try teaching 2 languages at once, so I'm in a dilema here, the idea was to show that programming doesn't depend on the language but on the logic and theory, but they say that its confusing, so, what do you guys think?

Is it confusing to try learning 2 languages at once? Should i split the lessons and post one language a day or pick just one language to my blog?

Thanx in advance for any reply :)

Seine
January 23rd, 2007, 01:03 PM
Perhaps your point could be adequately made by continuing your posts in a pseudo-code.

runningwithscissors
January 23rd, 2007, 01:09 PM
Pseudocode == Python

sapo
January 23rd, 2007, 01:27 PM
I think that the problem with pseudo code is that you don't see any results, i think its easier to understand how programming works if you see the results.

Catsworth
January 23rd, 2007, 01:36 PM
Perhaps you could alternate your blog entries so that alternate entries cover the same code but in different languages.

So, instead of:



Blog Day 1:
- Here's some code in C# look what it does
- Here's the same thing in Python look what it does

Blog Day 2:
- Here's some code in C# look what it does
- Here's the same thing in Python look what it does


You could have:



Blog Day 1:
- Here's some code in C# look at what it does

Blog Day 2:
- As a follow on from yesterday's C# tutorial, let's look at how the same code/idea works in Python.


This way you're still showing two languages as a comparison, and showing that the same techniques work in both, but you're allowing the people who only want to learn one to just skip alternate days/posts and stick to just one language.

Your only dilema then is which language will be the main one? ;)

sapo
January 23rd, 2007, 01:40 PM
Perhaps you could alternate your blog entries so that alternate entries cover the same code but in different languages.

So, instead of:



You could have:



This way you're still showing two languages as a comparison, and showing that the same techniques work in both, but you're allowing the people who only want to learn one to just skip alternate days/posts and stick to just one language.

Your only dilema then is which language will be the main one? ;)

That was one of the best ideas so far, and there is no main language, i m always doing python first because it's easier, but i want to have the same contents covered in both languages.

lnostdal
January 23rd, 2007, 01:57 PM
Keep it simple; stick with one language in the beginning!

Newbies often see syntax as obstacles when learning their first language(s), also when comparing different languages.

Coding in C I don't see or focus on the {};<>() characters (syntax) at all. Coding in Lisp I do not see or focus on the parenthesis (no syntax in the first place, really) at all. The only thing I see is semantics and structure -- which is emphasized by indention in both C and Lisp.

Most newbies (sad thing is; many intermediate programmers has the same problem) do not see stuff beyond or regardless of syntax in this way before they've reached a certain threshold. They somehow think the syntax _is_ the semantics. I'd say keep it simple and teach them one language and let them switch later themselves. While the semantics are the same, or overlap in some places; languages _do_ differ in this way -- the syntax-differences is enough of an obstacle to be a problem.

edit: at least do not force them to learn two languages at the same time; the suggestion above to separate things a bit sounds reasonable :)

Note360
January 23rd, 2007, 02:09 PM
Hey can we have a link?

Also, when learning to program something like Python is easier because it basically forces you to see without any of the other things. It will force them to write code with proper indentation and when you move to C# they will be able to see pasts teh symbols (), {}, etc.

sapo
January 23rd, 2007, 02:28 PM
Hey can we have a link?

Also, when learning to program something like Python is easier because it basically forces you to see without any of the other things. It will force them to write code with proper indentation and when you move to C# they will be able to see pasts teh symbols (), {}, etc.

The link on my signature :p

I think python is the best languages for beginners too, but my idea was to show people that programming isn't about the programming language and that you can't live with just one programming language.

hod139
January 23rd, 2007, 03:18 PM
Keep it simple; stick with one language in the beginning!

Newbies often see syntax as obstacles when learning their first language(s), but also when learning or comparing different languages.

I agree completely with the statement. Pick a paradigm (functional, imperative, logical), teach the concepts (either in pseudocode or real code), and give real examples in a one language. Too many languages will shift the focus to syntax, which is not what you want.

runningwithscissors
January 23rd, 2007, 04:09 PM
I agree completely with the statement. Pick a paradigm (functional, imperative, logical), teach the concepts (either in pseudocode or real code), and give real examples in a one language. Too many languages will shift the focus to syntax, which is not what you want.
Well, I think pseudocode sucks. There is nothing more satisfying than typing in a program and seeing it work. Very motivational.
Since Python's syntax somewhat resembles pseudocode and it is actually a very powerful language and not just a teaching toy, I think it's great for teaching. Remember to include a very prominent link on your site that enables the visitor to download a python interpreter (should you decide on python, of course).

sapo
January 23rd, 2007, 04:18 PM
Well, I think pseudocode sucks. There is nothing more satisfying than typing in a program and seeing it work. Very motivational.

Thats the idea ;)

So you guys think i should teach just python?

pmasiar
January 23rd, 2007, 04:51 PM
Hi guys, last week i started a blog and I'm posting a lesson per day teaching how to program. (...)

Is it confusing to try learning 2 languages at once? Should i split the lessons and post one language a day or pick just one language to my blog?

1) I recommend to use just one language - for beginner, who is not able to see beyond syntax yet, two different ways to do same thing are confusing.

2) I agree with your choice of Python as first programming language for beginners. It is clean, easy to learn, so beginner is able to make something runnable with minimum of the pain.

3) I don't want to discourage from your blog but there are many excellent introductory books for Python. I am slowly creating a little wiki for Python learners: :-) http://learnpydia.pbwiki.com/HowToStart . IMHO wiki is better suited to guide people throught the links than time-based blog (lates post on top). IMHO, YMMV.

4) So at the present I don't see lack of introductory books - it is more lack of medium-hard problems for beginners to solve: not too simple as homework-style task are, and not real hard real-life problems yet. And I am collecting the tasks and link them from learnpydia wiki.

Of course, you can do whatever you want. You can try to make blog even better that Baldwin's or wikibook tutorial - but it will not be easy, they are really good. :-) Good luck

Note360
January 23rd, 2007, 09:20 PM
Here is what you should do - Do it in series

eg A Python series, A C# series, A C++ series, etc

A series should contain any where from 5-40 lessons and then after that periodic "advanced" topics. Also, at the end every session come up with a few tasks for the person to try and do and then the next day post the answers to the tasks.

Edit: I looked through your blog and I like the C# lessons alot, though I ama level above beginner.

sapo
January 23rd, 2007, 11:29 PM
Thanx guys, i think I'll take off all the C# stuff and post explaining way, and maybe in a near future i can start some paralel C# lessons ;)

Also there is a new lesson available there, but just Python now.

Thanx for your feedback :)

Josh1
January 24th, 2007, 03:01 AM
Since I am starting to learn Python but I know alot about PHP etc, your blog is very neat. I have all the updates sync'd to my RSS client, awesome. :D

Dygear
January 24th, 2007, 09:58 AM
Teach them basic logic.

if 1 is equal to 1 then do something.
In PHP, C, C++ that statement would look like this:

if (1 == 1) {
// Do something
}
In this case, the do something part of the code would be ran, seeing as 1 is 1, and as such 1 is equal to 1, as such the `do something` part of our code is executed.

Just introduce them to concepts one at a time. Tell them why we use == (is equal) for comparing values and not just = (set equal to) by it's self. Then tell them about != (not equal) Then on your next post take it to the next level, and tell them how to use the && (and) modifer in if statements, and then || (or) and so on.

Also, keep your information current with best practices, I'm freaking tired of running across PHP websites about OOP that are very high in Google rank yet offer very little on the content side of things and why these things are this way. PHP and OOP have very little support, and that is really quite sad seeing as the ammout of power it gives to the programmer. Also, no one seems to have a clue that name spaces can be emulated in PHP in a very simple way.


Bottom line : Keep your **** current, baby steps are best, only introduce one concept at a time and K.I.S.S (Keep It Simple, Stupid!).

jblebrun
January 24th, 2007, 10:16 AM
Perhaps a good idea would be to stick with one language in the main Blog thread (probably Python, as others have suggested). Then, as you get the time/desire, make "parallel" Blogs that take the same path, but using different languages. Of course, eventually the parallel threads would have to have unique posts that highlight features of that language, but in the beginning, the parallel threads can probably closely follow the main thread.

sapo
January 24th, 2007, 10:48 AM
Teach them basic logic.

if 1 is equal to 1 then do something.
In PHP, C, C++ that statement would look like this:

if (1 == 1) {
// Do something
}
In this case, the do something part of the code would be ran, seeing as 1 is 1, and as such 1 is equal to 1, as such the `do something` part of our code is executed.

Just introduce them to concepts one at a time. Tell them why we use == (is equal) for comparing values and not just = (set equal to) by it's self. Then tell them about != (not equal) Then on your next post take it to the next level, and tell them how to use the && (and) modifer in if statements, and then || (or) and so on.

Also, keep your information current with best practices, I'm freaking tired of running across PHP websites about OOP that are very high in Google rank yet offer very little on the content side of things and why these things are this way. PHP and OOP have very little support, and that is really quite sad seeing as the ammout of power it gives to the programmer. Also, no one seems to have a clue that name spaces can be emulated in PHP in a very simple way.


Bottom line : Keep your **** current, baby steps are best, only introduce one concept at a time and K.I.S.S (Keep It Simple, Stupid!).
That's the idea, i don't wanna rush everything, i m trying to introduce one thing per lesson, like in my previous lessons, one lesson was about variables, another about operators, the in the future I'm going to use the contents of these lessons, but for now I'm just trying to make people understand why, because I see a lot of tutorials about python and other languages out there, but the programmers who write them forget that not everyone that is reading know what he knows.

And also i m going to teach good practices too :)

lnostdal
January 24th, 2007, 11:18 AM
Teach them basic logic.

if 1 is equal to 1 then do something.

I'm already hearing things like "Uh, but what's the point with that? Isn't 1 always equal 1?". Then later: "Uh, but what's the point in storing 1 in x? Couldn't I just type 1 instead of x?". x_x ... :)

True story btw ... I've gotten these kinds of questions a couple of times. Then later when explaining that `x' could represent Marios position on the screen as he move across it towards the right side, the young dead-on certain person that wanted to become a programmer "at all costs" just "left the room" ("What? I gotta type things too?" O_o) never to ask me or anyone else any programming questions again. :)