views:

151

answers:

10

Next week I have to give a presentation to a group of under privileged college students about the possibilities of a career in software development. These students have no exposure to programming what-so-ever.

I have a good idea of how to tackle the non-technical, general portion of the presentation. However, notwithstanding my decade of experience, I am finding myself at somewhat of a loss how to convey the concept of programming in a meaningful way in under 20 minutes. Do I demonstrate actual simple code, or do I stick with concepts?

I need to be able to scratch the surface of the vastness of the programming realm, to create just enough of a handle to those students, to pique the interest of those who might have the aptitude for it.

Any ideas that are concise and clear would be greatly appreciated. Also, if anybody knows of online resources that addresses this topic, please share.

Looking forward to some great input from this community. Thank you.

+1  A: 

The most exciting part about programming to me is creating something that is, in at least one respect, as smart as you are.

dclowd9901
+1  A: 

People are naturally visual thinkers, so I suggest using small programming examples that do something graphical. Perhaps considers the processing programming language and walking through some simple examples. Rather than having to understand abstract notions of variables and functions, they can more easily see what is happening.

I should add that in general processing tends to be targetted at nonprogrammers and for this reason you might find some other good resources and tutorials on understanding programming on their site http://processing.org/

frankc
+2  A: 

I would look at something like Lego mindstorms, or a webpage to show how tweaking a value can result in a recognizable change. The best results are when you actively involve the audience - concepts will bore them to sleep if they can't apply what you talk about.

OMG Ponies
Lego Mindstorms is a great idea. Just don't have anything like that available. :( Will have to come up with something visual and interactive. Lego Mindstorms: http://en.wikipedia.org/wiki/Lego_Mindstorms
Jacques Bosch
A: 

I'm not sure 'under privileged' is a pertinent variable. Seems like the challenge is simply explaining what programming is.

To get them excited, I'd maybe try pitching it by focusing on the design aspects of it. The iPad is a pretty object, but what makes it so great is the design of the software. How the software works, looks, interacts with the user.

DA
I'm guessing the "underprivileged" means not only do they not have any programming experience, they don't have much computer/technology experience at all.
tloflin
Exactly. It means that they haven't had the privilege of a good education of any sort, and this should be a consideration in how the topic should be presented.
Jacques Bosch
Good idea, but the iPad is a long way off from these kids world.
Jacques Bosch
I disagree with all these statements. Granted, 'it depends' but around here the underprivileged schools have as many in-school computers as any other. And with the proliferation of smart phones everywhere, complex mp3 players, facebook, myspace, youtube, I'm not sure 'technology' is that foreign to people. And these kids are in college, so, again, not a foreign concept. And whether you own one or not, an iPad/iPod Touch is very much an icon of what 'exciting programming' can be. I suppose I'm saying: don't make too many assumptions based on the 'underprivileged' label.
DA
I suppose it also depends what country you are in. I have had some chats with the principle, so have an idea of what to expect.But I hear what you are saying. And I appreciate the caution. Thank you.
Jacques Bosch
+2  A: 

These are both supposed to be kid friendly and you should be able to demonstrate neet things with them.

Karel the robot http://en.wikipedia.org/wiki/Karel_(programming_language)

Scratch the cat http://en.wikipedia.org/wiki/Scratch_(programming_language)

You could also implement bubble sort with a small number of the children by blindfolding yourself and sorting them by height.

nategoose
I'll check out the links. The bubble sort is a great idea. Perhaps thereafter the same thing could be demonstrated with code on screen.
Jacques Bosch
A: 

I would try sticking to examples of what you can achieve with code. (how does FaceBook know to suggest to add people you might know as friends, how Google Page Rank Algorithm basically works, and more other great and pretty simple ideas).

you don't need to enter the math of it all (you can describe the page rank matrix as a giant table with rows and columns).

in conclusion I would suggest:

1) point out some examples of stuff kids use on computers. 2) use a simplistic explanation about how one of them was implemented. 3) show a live demonstration of something. (eye-candies if possible)

Shuky Kappon
A: 

Python is a great language for beginners. It is straightforward and cross-platform. Begin by explaining the concept of variables, functions, control statements, etc. Then move on to more advanced constructs like classes and modules.

George Edison
+1  A: 

Programming is about you (the programmer) being in control. I would present some example of how you can program something useful in an easy way. Here is what I suggest:

  1. Take a movie with subtitles in srt format with the subtitles de-syncronized having a delay of say 3 seconds. (You can create the delay beforehand with a simple script).

  2. Show them the movie so they can see the problem.

  3. Show them a simple program to fix the problem (language selection is critical so I recommend Python).

  4. Play the movie again to see the results.

Sergio
+1  A: 

I taught intro CS (among other things) at Boston College in the early 80's, and most of the students were liberal arts majors. After about 2 semesters I think I came of with a strategy that got them interested from the first day. (Actually, the first thing I learned was that what was simple to me was not simple to them. That can't be stressed enough.)

It's not about languages and games and showing off technology.
It is about putting in place some extremely simple concepts and demonstrating them:

  • The idea of memory, which I liken to a bunch of numbered holes in a wall, each capable of containing a number.

  • The idea of a very small set of possible operations, done one at a time, letting you do more complicated things.

You may find your own way to convey ideas like these. What I did on the first day was to draw a picture of a simple memory and write a simple pseudo-code procedure to play a tune on a speaker by moving the speaker cone in or out. Then I would pull out of a paper bag a machine I had built, consisting of an 8008 microprocessor and assorted chips, hook up a speaker to it, and play the tune. Then I slowed it down by a factor of 1000 by slipping one end of a capacitor under a connector on the memory timer chip, and then the students could hear the speaker going click .. click .. click. That got across the point that the computer really was doing things one at a time, and its normal behavior of seeming to do things magically was only because it was doing them quickly.

Mike Dunlavey
Great ideas. Thanx much. presentation is happening day after tomorrow.
Jacques Bosch
+1  A: 

It is infuriating that occupation in the liberal arts is reserved for the privileged. For a working-class person to earn a living they've got to spend years slaving to understand calculus, statistics and other manner of scientific subject matter. Nepotism is alive and well in the Land of Opportunity.

Hilary
What on earth... you find it unjust that study of mathematics is required for practicing programmers? Or am I missing some larger point?
Derrick Turk