|Think about Loose Coupling|
Where does the new generation of programmers begin?by davido (Archbishop)
|on Oct 04, 2013 at 18:17 UTC||Need Help??|
In another thread some discussion took place regarding how programming is taught to new students. And the discussion made me reflect back a bit.
My first opportunity to learn a bit about programming was when a friend's father got an IBM PC, the original, in 1980. Of course it came packaged with BASIC, and suddenly at age 12 I started spending a lot of time at that friend's home, and a lot more time reading books on BASIC at home.
In high school I took Comp Sci I: Integer BASIC on an Apple 2, and a week or so with Logo just for fun. Comp Sci II: FP BASIC, and an intro to 6502 Assembler. And AP Comp Sci: Pascal. I think about the most advanced thing we did in AP Comp Sci was implementing linked lists.
At home I got a TI-99/4A with Extended BASIC, and no other software. I think my parents' philosophy was that I should be able to write programs for whatever I wanted the thing to do. And although that was a pretty limited platform, I felt like I learned a lot. Friends had Atari 400/800's, Commodore Vic-20's and 64's, Kapros, and many other contemporaries. I think that's where I first started understanding portability issues; no two BASICs were alike, but I loved to tinker at whatever PC was available to me.
At the University my CS program was using Modula-II on Macs. I was curious about C, and had to take a class at the local community college to scratch that itch since my university CS program wasn't offering anything in C at the time. Somehow I got out before Java took over the University like a virus with no known cure.
During my early college years, at home I was using C and Pascal on an Atari 1040ST, and eventually graduated to a PC clone where I spent a lot of time with C and started digging in to C++. I discovered Perl around 1996 or 7, when I worked with my ISP to set up an email-to-pager gateway for AT&T pagers. We were even doing email subject lines forwarded to cell phones before official SMS text messaging arrived on the scene, using procmail forwarding rules and a Perl script acting as glue.
About 18 months ago I had the opportunity to get involved in some seminars on scripting languages at a community college. I was curious and reviewed the course outlines for the community college's CS-I and CS-II classes. I was surprised to discover that the courses were taught as though the students had never programmed anything at all, ever. This concept; the possibility that someone could arrive at a college level CS course without ever having programmed before was astonishing to me. One of the department's professors was a friend of mine, and she explained that if she didn't take it painfully slow at first, she would leave too many behind.
In the early 80's computers weren't of much use to anyone who wasn't interested in learning a little about programming. Of course it's been said that an entire generation of programmers has been ruined by BASIC, I am more inclined to see it from the positive side; an entire generation of programmers became interested in programming because it was so accessible.
In the modern 4-year or 2-year college settings, what level of knowledge of programming is typical? Where are young people getting their start? Is it really common to start a CS course without ever having spent time with any programming language?
Nowadays the barrier to entry in programming is higher, I think, than it used to be. In the early 80's, you had to plop down a chunk of cash for a computer with an 8-bit processor, 16kb of RAM, and a cassette deck for storage. An old TV was often the monitor. But it came standard with a useful programming environment. Now computers are everywhere. However, now our expectations of software are so high that it's difficult for someone starting with "Hello world." to grasp how that is relevant to writing the next Adobe Lightroom, or Grand Theft Whatever game. And the average user never gets anywhere near a line of code.
Many of us grew up programming. Maybe we weren't doing anything terribly complex, but we were familiar with control flow, variables, data types, and fundamental concepts. What's the modern-day story for someone pursuing an interest in programming?