Computer Science Canada

Compsci.ca, a reflection

Author:  wtd [ Fri Oct 13, 2006 7:19 pm ]
Post subject:  Compsci.ca, a reflection

From a recent e-mail from myself to a colleague detailing my activities for the past few years.

---

I feel as though a lot of the students who have come to compsci.ca are
there precisely because they have been learning to program. Unlike
myself, most are learning in an organized classroom setting, yet I
think they come to the site and ask for help because they feel that
that system has in some way let them down and that they cannot get the
help they need from their teachers.

There are two types of problems that are posed. The first, and easier
problems are specific questions about a particular technology. In
these cases I am either familiar with that technology or not, and can
offer help on that basis.

Much more interesting is the problem of students who want to learn to
program, but are lost. Among this group there are two types of
people. I'm sure the division is well known to yourself and Richard.
There are those who heard from a relative or school counselor that
computer science and programming was a good path to a high-paying
career. This group is pretty hard to help. Unless they can go from
"Hello, world!" to building Quake 5 in a week or two, they get
frustrated and move on.

The others are the passionate ones. They represent the fun challenge
for me. They may or may not have recognized that passion within
themselves, but either way they've decided to take a computer science
class. Something, however, has gone wrong. They're ready to give up.
Identifying that problem is one of the most stimulating intellectual
challenges I've ever experienced. Learn Spanish or Mandarin is in the
running for that distinction as well, though.

The problem for these students is almost always one of two things.
They may find the course unsatisfying. Perhaps the teacher is
unenthusiastic or the pace is slowed for the ones who have no passion
for the subject. For these students, I have attempted to craft
lessons that can convey a fundamental understanding of the conceptual
material and specific programming language knowledge that their
courses are likely to cover. With it being online, and an open forum,
there is no one holding them back from learning as fast as they want.
This is something I'm sure JJ People is very familiar with. An
example of the work I have done in this regard is to craft an
introductory Java tutorial aimed at rather rapidly introducing OOP
concepts. For those students at schools still using it, I have also
written extensively on the subject of C and C++.

The other group appeals to the polyglot in me. They have few problems
with the course, but just find that for whatever reason, the
particular language being used to demonstrate concepts is either
unappealing or incomprehensible to them. Dealing with this group
probably represents the greatest amount of work I have done on the
site because there is little way for me to know which language will
make all of the concepts make sense. I describe my approach to this
as throwing languages at a wall, and seeing which stick. I've briefly
delved into numerous languages hoping to spark some interest. When
languages do elicit that interest, I will generally devote
considerably more effort to them.

The biggest success I've had in that regard has probably been Ruby,
but I've also encouraged considerable interest in functional
programming in the Objective-Caml programming language and recently at
least one other contributor has expressed interest in SML. I have
also written about Objective-C, C#, D, Pascal, Eiffel, Perl, Python,
Erlang, Haskell, Scala, Nice, Scheme, Common Lisp, and likely others
I'm forgetting at the moment.

The successes I've had in this endeavor have been hugely satisfying
for me. I know that the academic world either won't or can't afford
to employ this strategy to encourage passionate young programmers, so
it's nice to think that perhaps I am better in some way, despite the
fact that I don't have a degree.

Author:  cool dude [ Fri Oct 13, 2006 10:19 pm ]
Post subject: 

don't shoot me for asking but what do you do as a career?

Author:  we64 [ Fri Oct 13, 2006 10:47 pm ]
Post subject: 

cool dude wrote:
don't shoot me for asking but what do you do as a career?


lol, I wonder the same thing.

Author:  md [ Sat Oct 14, 2006 10:52 am ]
Post subject: 

I would like to offer my thanks to wtd for all the work he has put into his tutorials, and for answering many questions from many people. I believe that wtd is one of our most outstanding members and we as a community should be grateful to have him here.

So thank you wtd for all your hard work, and for getting me to actually think about scheme and lisp as useful languages. Smile

Author:  wtd [ Sat Oct 14, 2006 11:05 am ]
Post subject: 

Thank you. Smile

Author:  Cervantes [ Sat Oct 14, 2006 12:19 pm ]
Post subject: 

I, too, offer my sincere thanks. I owe the vast majority of what I know about programming to you, wtd. But even more important than all the knowledge you've given me is the realization that there is so much to learn in the world of computer science, and the tools to learn that material.

I know it's been frustrating for you at times. I'm amazed at how much you've truly accomplished. Three cheers for wtd!

Author:  Tony [ Sat Oct 14, 2006 1:24 pm ]
Post subject: 

code:

3.times{cheer(wtd)}

I own my tool choices (OSX, Ruby) to wtd, as well as getting to be so much more open minded about the technology out there.

Author:  rdrake [ Sat Oct 14, 2006 10:50 pm ]
Post subject: 

Tony wrote:
I own my tool choices (OSX, Ruby) to wtd, as well as getting to be so much more open minded about the technology out there.
Definitely one of the most important things I have learned from you, wtd. Opened my mind so much Smile.

Author:  apomb [ Sun Oct 15, 2006 4:02 am ]
Post subject: 

i may have said some stupid things before, but wtd, you truly do give considerable effort to this site and to anyone who asks for help. I guess its up to the person asking the questions whether or not to take the advice and help constructively. Sincere gratitude towards you, wtd

-Adrian

Author:  Delos [ Sun Oct 15, 2006 3:50 pm ]
Post subject: 

Huzzah for wtd, apparently the inspiration for our annual What-The-Duck-athon...now, my question (rather comment) is, that was written in GMail, right...that alignment looks mighty familiar!

Author:  wtd [ Sun Oct 15, 2006 4:08 pm ]
Post subject: 

Yes, it was written in GMail.

And thank you.

Author:  Naveg [ Mon Oct 16, 2006 9:07 pm ]
Post subject: 

I realize i'm somewhat of a lurker on this forum these days...but let me utter my words of thanks to wtd as well. When I first came to compsci.ca during my first year of high school for help with my Turing projects, it was you who enabled me to uncover my hidden passion for computer science. Your tutorials and brief glimpses at various languages are nothing short of extraordinary!

Author:  wtd [ Mon Oct 16, 2006 10:25 pm ]
Post subject: 

Thank you. Smile

Author:  [Gandalf] [ Tue Oct 17, 2006 1:34 am ]
Post subject: 

Thank you wtd, for all the help, great tutorials, and overall insightful thoughts. Whenever I've asked for help you've been willing to give it, whether through the IRC channel or in any of the compsci.ca forums. You are always brewing up a new tutorial which, whether I understand it or not, is always something to ponder over. All the effort you put into passing down your immense wisdom and knowledge to the younglings here is greatly appreciated and has personally been of great benefit to me.

Right now I'm more than half asleep and probably not making any sense, so I'll finish here. Keep it up! Wink

Author:  TokenHerbz [ Fri Oct 20, 2006 6:39 am ]
Post subject: 

yeah wtd is a good guy, as are many others who teach, and explain on this site. Iv'e had help from many many people, and its awsome that i actually learnd what i know now, out of school, from here...

I enjoy programming, and i wish i was much better at it, and with that means more learning, something which is very hard to teach yourself, when you dont know it. (try learning french by yourself, you know its going to be hard)

Alot of people lay down information, concepts and help to make the path easier. Perhaps we should have lessons made up like ones that would be found at a school, to go over the basics, math need'd, how to implement it, OOP, and really advanced things, in Turing, or C++, both of which im really interested in Smile... Idea's to expand, and use the knowledge you learn so your not to forget it, and little quiz's to test if you should go onto the next lesson.

Iv'e been on the hunt for a turing one, and i've yet to find it.. Link anyone?


Anyways, ofcourse its 6:40am, im a night hawk, missed everyone in irc, but props wtd, and all you others:)

Author:  ZeroPaladn [ Fri Oct 20, 2006 12:26 pm ]
Post subject: 

I love the tutorials that you post, wtd. also, your creation of the Functional Programming area of the site is truly amazing. I meddled wth O'Caml a few nights ago, and i think im getting the hang of it. It's freakin neat.

Turing:
var numberOfCheers : int := 3

proc cheer
    % Insert crazy cheering code here
end cheer

for i : 1 .. numberOfCheers
    cheer
end for

Author:  wtd [ Fri Oct 20, 2006 12:43 pm ]
Post subject: 

In that case, write a function in O'Caml which cheers a certain number of times. Smile

It should be callable like so:

code:
cheer 3;;

Author:  Clayton [ Tue Oct 24, 2006 1:46 pm ]
Post subject: 

Objective-Caml:

let cheer x = <insert crazy cheer code here>
cheer 3;;


Very Happy

thanks alot wtd props to you

Author:  rdrake [ Tue Oct 24, 2006 3:06 pm ]
Post subject: 

Freakman wrote:
Objective-Caml:

let cheer x = <insert crazy cheer code here>
cheer 3;;


Very Happy

thanks alot wtd props to you
Objective-Caml:
# let rec cheer n =
      match n with
      | 0 -> ()
      | _ -> print_endline "Hooray!";  cheer(n-1);;
val cheer : int -> unit = <fun>
# cheer 3;;
Hooray!
Hooray!
Hooray!
Now, explain how it works Wink.

Author:  Cervantes [ Tue Oct 24, 2006 3:50 pm ]
Post subject: 

We don't need to explicitly say anything about the parameter that our cheer function takes. Only that cheer is a function, which means it takes one parameter, and we will pattern match it:

OCaml:

let rec cheer = function
  | 0 -> ()
  | x -> print_endline "Horaay!";
         cheer (x-1);;


Damn, I've got to get back into O'Caml. Well... does Scheme have pattern matching?

Author:  wtd [ Tue Oct 24, 2006 10:19 pm ]
Post subject: 

Cervantes wrote:
Well... does Scheme have pattern matching?


If so, certainly not along the same lines. Smile

Author:  Aziz [ Wed Oct 25, 2006 8:48 am ]
Post subject: 

Indeed props to wtd, for deflating my ego:

the following is a dramatization

Common dialog between me and wtd on irc wrote:
Aziz: Hey rdrake, wtd, Ultra!
rdrake: why hello young chap
Ultrahex: rOckIN dUDEs!
wtd: Good evening, Sir Aziz.
Aziz: So watchya all doin?
Ultrahex: stICKin MAH TOeS in MY NOes!!!11!
rdrake: waiting for class. methinks class is going to be late
wtd: Oh, pretty busy doing some simple tri-functional self-sustaining ecosystem algorithms.
Aziz: oh, busy ol' wtd! Hey guys, I just finished my leet programzz. It took me a long time. Check it out *link to post*
rdrake: cool, nice work Aziz Very Happy
Ultrahex: holy crap teh 1337z! mine's still AWZOMers!
wtd: Ah, yes, quite nice. But did you know that 1000 lines of code is unefficient, sloppy, and could be shorter? It is nice though. Except why did you do this: <some code snippet>
Aziz: well <some n00b explanation>. what dos thou suggest?
wtd: Well, take a look at this: <rafb.net link to some SML or O'Caml or similar language snippet>
Aziz: I understand the line 'x = y + z' anything else is gibberish
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: oh yeah i got that but what about...<more questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: Oh friggin' sweet. Thank you wtd!
wtd: You're very welcome.
Aziz: sorry for keeping you away from your crazy wiseman work
wtd: Oh, don't worry, I finished it while you were asking your 32nd question.
Aziz: ................ o.o damn son
Ultrahex: aziz, WTD is OLdER than YOU! idiot!


XD Also, props to rdrake and Ultrahex too. They've helped me immensely as well. But i had to take advantage of them for this one. Note that ultrahex isn't quite as goofy as I made him seem (for those of you who don't frequent the irc channel). Though, I'm not far off XD

Author:  md [ Wed Oct 25, 2006 9:01 am ]
Post subject: 

Aziz wrote:
Indeed props to wtd, for deflating my ego:

the following is a dramatization

Common dialog between me and wtd on irc wrote:
Aziz: Hey rdrake, wtd, Ultra!
rdrake: why hello young chap
Ultrahex: rOckIN dUDEs!
wtd: Good evening, Sir Aziz.
Aziz: So watchya all doin?
Ultrahex: stICKin MAH TOeS in MY NOes!!!11!
rdrake: waiting for class. methinks class is going to be late
wtd: Oh, pretty busy doing some simple tri-functional self-sustaining ecosystem algorithms.
Aziz: oh, busy ol' wtd! Hey guys, I just finished my leet programzz. It took me a long time. Check it out *link to post*
rdrake: cool, nice work Aziz Very Happy
Ultrahex: holy crap teh 1337z! mine's still AWZOMers!
wtd: Ah, yes, quite nice. But did you know that 1000 lines of code is unefficient, sloppy, and could be shorter? It is nice though. Except why did you do this: <some code snippet>
Aziz: well <some n00b explanation>. what dos thou suggest?
wtd: Well, take a look at this: <rafb.net link to some SML or O'Caml or similar language snippet>
Aziz: I understand the line 'x = y + z' anything else is gibberish
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: oh yeah i got that but what about...<more questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: uh....<questions>
wtd: <explaining explaining>
Aziz: Oh friggin' sweet. Thank you wtd!
wtd: You're very welcome.
Aziz: sorry for keeping you away from your crazy wiseman work
wtd: Oh, don't worry, I finished it while you were asking your 32nd question.
Aziz: ................ o.o damn son
Ultrahex: aziz, WTD is OLdER than YOU! idiot!


XD Also, props to rdrake and Ultrahex too. They've helped me immensely as well. But i had to take advantage of them for this one. Note that ultrahex isn't quite as goofy as I made him seem (for those of you who don't frequent the irc channel). Though, I'm not far off XD


Zomg! rofl! (yes, I actually did laugh out loud on this one, but I didn't fall of my chair Wink)

Author:  Aziz [ Wed Oct 25, 2006 12:50 pm ]
Post subject: 

You liked it? Well, I'm proud now Very Happy And I hope wtd likes it. It was meant to be flattering Razz And maybe a little suck-upish. You know, so next time I do something bad he won't ban me. (come to think of it...i've never seen wtd boot anyone, let alone ban....what a kind soul....... BooHoo

Author:  Tony [ Wed Oct 25, 2006 2:54 pm ]
Post subject: 

Aziz wrote:

Common dialog between me and wtd on irc

That was actually rather well done Smile

Author:  iamcow [ Wed Oct 25, 2006 4:45 pm ]
Post subject: 

however getting back to the topic of compsci.ca. I believe the concept is that students coming here to learn get better at programming so that later, they can assist newcomers to the site. This is obviously not the case with everyone so we owe quite a bit to the regulars of this site

Author:  Mazer [ Wed Oct 25, 2006 4:57 pm ]
Post subject: 

iamcow wrote:
[...]This is obviously not the case with everyone so we owe quite a bit to the regulars of this site

Some of the regulars. It may not mean as much coming from me, but thanks wtd. You're a huge part of this community.

Author:  wtd [ Wed Oct 25, 2006 6:20 pm ]
Post subject: 

iamcow wrote:
however getting back to the topic of compsci.ca. I believe the concept is that students coming here to learn get better at programming so that later, they can assist newcomers to the site.


More to the point: my goal has been to help all of you become people I can proudly call equals or say have surpassed my skills.

Author:  wtd [ Wed Oct 25, 2006 6:29 pm ]
Post subject: 

Aziz wrote:
Indeed props to wtd, for deflating my ego


The first step on the road to success is soul-crushing, humiliating failure. Smile

Author:  Aziz [ Wed Oct 25, 2006 9:44 pm ]
Post subject: 

wtd wrote:
iamcow wrote:
however getting back to the topic of compsci.ca. I believe the concept is that students coming here to learn get better at programming so that later, they can assist newcomers to the site.


More to the point: my goal has been to help all of you become people I can proudly call equals or say have surpassed my skills.


Surpass. Hah. Encouragement is one thing, but you're just giving us false help XD. But indeed, this is the site anyone who I've talked says the go to get help. The best (and probably only) Turing support site around, and a lot of regulars are not only teaching, but learning! Doing a tutorial teaches you a few things too Razz Props to not only wtd, but to all who've made this site a great success Laughing

Author:  Tony [ Wed Oct 25, 2006 10:07 pm ]
Post subject: 

Aziz wrote:
Doing a tutorial teaches you a few things too Razz

A few? You don't realize just how much you don't know about a topic, until you try to explain to someone else.

This is why I try to just sit down and write about topics I'm interested in. I learn so much, in great detail, and get to teach others Very Happy

Author:  Aziz [ Thu Oct 26, 2006 8:01 am ]
Post subject: 

Indeed. You think it's gonna be simple and easy until...."Well, wait a second...". That happens all too much in programming XD Again, Luckily there's the generous folks here. Okay, last repetitive post, it's becoming spam. *fears teh ban*

Author:  wtd [ Thu Oct 26, 2006 1:02 pm ]
Post subject: 

It'll be the epilepsy-inducing avatar that gets you banned. Wink

Author:  Mazer [ Thu Oct 26, 2006 3:23 pm ]
Post subject: 

Adblock is my hero Smile

Author:  Aziz [ Fri Oct 27, 2006 8:23 am ]
Post subject: 

Do you not like it *shame'd*


: