Monday, July 17, 2017

Words: Another Argument for a Real Education

We were talking about Education for several years, and I was limping along, trying to explain why some things I was doing were not working, and why both teachers and students are frustrated by the process of education, with the education system we have.  And then Trump happened.

You see, one of the most enormous problems we have in explaining things to each other is words.  A lot of the time, if we're talking about recipes for Strawberry Pie, or something relatively simple like that, there is no difficulty.  What you mean when you say Strawberry is probably pretty close to what I mean by that word, and what I mean when I say pie is pretty much what you probably mean.  (Even here, there's some room for confusion, especially if you've never really made or eaten a Strawberry Pie, but more on that later.  Much later!)

Many of those who have gone to college are likely to suspect that the reasons why being President so confuses Donald Trump is probably education.  But wait; he has had a college education: a Master's degree from the University of Pennsylvania, if we're to believe the news reports.  What has gone wrong?

Why did such a large number of people jump on board the Trump Wagon?  Again, the culprit might seem to be education.  But are we sure?

A significant skill one learns in a quality education is to use words with precise meanings.  What does education mean to you?  The obvious answer is that in college one learns a lot of things, and so it depends on which of those things we're focusing on.  We have to have a major, and we could have a minor, and any number of general education courses, and we could take all sorts of electives, which are neither for your major or your minor, but just for the heck of it; and we could play varsity athletics, and so on, and so forth.  Which of these does one mean when one talks about someone being educated, and someone else not being educated?

The skill that the Trump Administration and all its beleaguered members seem to trip over, is that of using the right word in the right place.
They read the Constitution, and they don't understand the words.  Of course the Founding Fathers meant different things than we do when they said "The right to bear arms," or when they use the words "All men are created equal", or similar expressions that must be understood in context.  Even experts in constitutional law disagree in how these terms should be applied: whether we must take them as they would have been understood in the 18th Century, or whether we should use them in some sense that has been translated to the 20th or the 21st century, where Arms could mean anything from a Flintlock to a Bazooka.  But there appears to be confusion in understanding the meaning of even quite unambiguous language.
Then, they look at an understanding that does not have the force of law directly, but does so indirectly, such as the proscription against retaining control of a business that can profit because of the owner being President; it does not seem illegal.  This is a different kind of blindness.

Almost more important are the words that are needed to exactly explain what the administration is thinking.  Trump thinks of speaking as merely spewing advertising copy.  He is accustomed to addressing an audience that has, up to now, been perfectly satisfied to take at face value his words that "It's going to be great.  It's going to be the best you ever saw."  But at least a few of his followers are now ready for two things: One: How exactly is it going to be great?  and two:  Can we have some input into it?  The hallmark of a great administration is its ability to explain to the public what they're planning to do, and why.  And How.

A third sort of skill, and unfortunately many college graduates never quite get this, is that a good education should make it easier for a young person to understand and deal with ever increasing levels of complexity.  Every year, the kids are able to tolerate less and less complexity, until colleges are driven to stick simply to the syllabus of high schools.  Unfortunately, the area of Business Management is notorious for being one in which there is no real penalty for those who want to oversimplify things.  This is especially true if one has a lot of money to throw around, because one can always buy one's way out of trouble.  Trump's numerous bankruptcies send up a red flag to those who know: Trump has not taken into account where things could go wrong.  Things could go wrong when trying to set up a casino.  How much more can things go wrong when trying to set up health care for a nation of 350 million people?

There is very little that stands in the way of Medical Insurance Companies raising their premiums as high as they like.  This is America; businesses are allowed to make profits, and Health Insurance companies are businesses.  But yes, there are a few regulations (far too many, in the view of the Insurance Industry) that hold back the rates to levels that just barely make it possible to afford them.  Big businesses must find ways of paying the ridiculous premium rates that the Insurance Industry demands, to allow them to take home the profits to which they have become accustomed, and now everyone must pay the premiums, under "Obamacare", not just the chronically sick folk.  Then there is the pre-existing condition problem, Medicare and Medicaid, and prescription drugs, and the Death Committees, and so on.  And of course, Family Planning.  It is complex.  But to someone who has merely a business degree, almost any complexity is too much complexity.

What about the complexity of International Relations?  Once a bunch of politicians (whose only claim to fame is that they have wealthy friends) take control of any government, they get into a spiral of systematic oversimplification that leads to (1) reduction of services, (2) escalating racism and xenophobia, and maniacal nationalism, all in the name of (3) reducing taxes, all of which is supposed to (4) give business a shot in the arm, but which instead leads to cultural chaos and civic unrest and general alienation.

Almost any time Trump says something to a foreign leader, it seems to cause unhappiness somewhere else, not least right here in the good old US.  What is this, he's probably thinking, I can't hardly say anything without bothering somebody!  Nobody seems to be happy with his banning Islamic visitors wholesale.  Nobody seems to be happy with his choice of Secretary of State.  Nobody seems to be happy with how he deals with Russia, and those jokers seem to want to fool around with US elections, something that seems never to have happened before.  And though the fooling around was in favor of Trump, the president is not happy with all that.  Every time he pokes the balloon on one side, it pops up on another.  Welcome to international diplomacy.

What exactly is alienation? It is a condition where a person does not understand the motivations of another person.  A lack of empathy of frightening proportions.  Back in the early fifties, when McCarthyism was in high gear, half the people empathized with the socialists, including those who viewed Franklin Roosevelt's social and economic reforms as lifesaving, while the other half considered any sort of social welfare as driven by communist influences.  Over a decade, half the population was determined to go into Vietnam and do some serious communist butt-kicking, while the other half was aghast at the prospect of having to go into a foreign country and kill people who seem to have a perfectly good right to choose a communist government if they wanted to.  What we ended up with was acute alienation, where personal values were so different from person to person that young people simply could not subscribe to the values of their parents.  Today, too, the Democrats are preoccupied with Trump and his offspring meeting with Russians.  These meetings, in my view, are really insignificant.  The important things are the new Health Care bills.  They cannot be any better than the existing ACA a.k.a. Obamacare, which does not prevent the Insurance Industry from ripping off the people anyway.  But I can hardly conceive the GOP being any tougher with the Insurance Industry than Obama was.  We cannot have decent affordable health care until Insurance Companies are all shut down, and obviously replacing their services with a government-run agency simply means Medicare for all, which nobody minds, except that the GOP would view that as total defeat.  However, though many of us have difficulty subscribing to the values of Trump supporters, we do not elevate this phenomenon to the point of calling it alienation.

There are other things that education provides apart from an appreciation of language, and a degree of comfort with complexity, but sufficient unto the day are the evils thereof, as a great man once said.

Arch, exhausted.

Thursday, July 6, 2017

Computer Education for Everyone, Part 0: History

When I first went to college, I had four interests: physics, mathematics, computer science, and music.  These are still my interests, but I want to focus on two of them.

Mathematics has been around for millennia; I mean, the Egyptians (whoever they were; they might or might not have been the ancestors of those hanging out in the UAR today) used it, and so did the Arabs, for instance to cross the desert.  We know that the ancient Greeks knew a lot of mathematics, and we also know how they taught it.  The art of teaching mathematics is also several thousand years old, so there are new fashions in how to teach mathematics, but they have a tough job competing against ancient methods.  In contrast,

Computer Science only arrived in our midst about a century ago, but since then, the techniques of programming, and teaching computer science have changed furiously, so it is incredibly difficult to keep up.  Back when I first started working, I taught the first several courses in computer science using methods and tools that seemed very simple to me.  But in 1995, everything changed.  When Windows was created, and shortly afterwards, the Windows_95 operating system that was native to the newer PCs, the programming game had to change.  This is, in retrospect, not hard to explain, though I was never happy with these changes.

The elements of Programming
The computer is a clever device that has two aspects to it.  Firstly, it has storage, which is a huge number of places on the computer chip that can remember numbers.  Secondly --and this is the clever part--it has a unit that can obey instructions.  This is the part that boggles the mind of non-computer people: how can a computer obey instructions?

(By the way, the storage (or the memory locations) are numbered from 1 to 1,048,576 (or something like that; it depends).  It's an enormous block of apartments, each of which holds a number.)

Back to instructions.  Essentially, the basic computer chip obeys instructions such as: "Go put this number in location 3."  More interesting instructions are like: "Check the number in location 7; if it is 0, go to step 8,  otherwise, continue with the next instruction."  The wonderful thing is that, with a little work, several hundreds of this sort of instruction can play a Netflix movie for you, or solve an equation, or put an astronaut on the moon.

Back when I was teaching computer science (we were already past the punched cards stage), the only way to get any instruction into the computer, at the level at which we were teaching, was through the keyboard.  The only things you could get out of the computer, was on the screen.  This made things simple.

Still, many fun things could be done with these simple tools.  By packaging large sets of instructions together, we could make our own super-instructions.  For example, we could set it up so that the computer could sort a list of numbers in increasing order!  But if we got tired of having it do that, we could have it sort 25 lists of numbers, and sort each one.  Okay, that's pretty tame, but the interesting thing here is that once you solve a basic problem, like sorting, you could package that solution into what is called generically a module, and use that module in a more complex program.  You could call your module sort, and use it as if sort was an instruction, just like Put this number in location 3 was.  You could add to the language.

Objects.  In addition to these super-instruction modules, we could invent various gadgets.  For instance, using numbers, we could make gadgets called characters!  Remember, the basic things a computer uses is numbers.  But making characters is easy; we basically say something like 65 stands for A, 66 stands for B, and so on.  So, as long as the computer knows that you're interested in characters, when you say 69, it knows you want E.

A second ago, we were talking about lists of numbers.  Well, we can really do nice lists of numbers; it only takes a bit of careful organizing (which, mercifully, the programmer does not need to do; the programming language easily takes care of it); it only needs to know how big your list is.  We can do better.  For instance, I could invent a gadget called a student record, which has a mixture of different sort of simpler gadgets: A name, a homework score, four test scores, a final score, and an average.  Now, you have seen things very much like this: this looks like a row in a spreadsheet, if you've used one of those.  Well, a spreadsheet is pretty much a huge rectangle of multi-purpose gadgets, set up so that each place can be one of several sorts of gadgets.

When Windows came along, the gadgets aspect of programming completely took over.  The new generation of gadgets were far more complex than just a name, or a score, or a list.  For instance, Microsoft programmers invented a thing called a Window that had various parts: the title bar, the width, the height, the position on the screen, any boxes in the window into which you might want to type things, how you move the window, what color the background is, and so on and so forth.  Further, Microsoft provided the gadgets it wanted you to use: it was called the Windows API,  which is short for application programming interface.  At that point, students were taught to use built-in gadgets (objects), and learn how to solve various problems with the objects that were available.  They could advance to creating their own gadgets, and fairly soon.  But now the gadget tail, or the objects, were wagging the programming dog, which was a little difficult to adapt to.  Many computer science teachers have made the transition with ease (and I, too, have taught a few courses using the new object-oriented paradigm for special purposes), but the added layer of Windows seems, to me, to obscure the transparency of the programming process.

I must be one of a small minority that rues the progress of the computer science environment.  The proportion of people going into programming has fallen off, it seems to me; most people are satisfied to just use computers, and not program them.  So millions of people are able to use word processors, such as Word or WordPerfect.  (There are others, and for free, too: Open Office Write, for instance.)  Or browsers, or spreadsheets, or PowerPoint.  I'm not even sure what the generic word for software such as PowerPoint is; something like slide show, no doubt.)

Peripherals.  The programming setup of Windows changed other things as well.  The output was still the screen, but instead of being set up to show just letters of the alphabet, it could now show pictures.  Pretty soon, it could play music, and send out messages along the lines: email.  All this could have been handled with basic object-oriented programming, but once the fully-object-oriented paradigm came to dominate the programming environment, and the accompanying languages, C, C++ and Java became the only games in town, you had to come to terms with the vagaries and peccadilloes of those languages.  Among other things, this encouraged bad programming habits among weaker programmers, because there were short cuts that they began to take en masse, which made it difficult to repair broken programs, and upgrade programs to keep up with user and hardware demands.

Operating systems did not impinge on the attention of the average citizen until a few decades ago.  These were initially supervisor programs that allowed a number of users to use the same mega-computer.  You "logged in", and used the same computer as several dozen others around you.  The operating system ran programs for you on request, such as an email program, or an editor, or a browser, or whatever.  Nobody paid much attention to what it was called.  Then, the innovators at Bell Labs designed a highly flexible operating system called UNIX, which was practically a program language on its own; you could chain together UNIX commands to make it do more interesting things.  For the record, as per Wikipedia, it was designed and implemented by Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna, and intended to be a sandbox in which they played at Bell Labs.  But somehow, UNIX began to spread throughout the computer science university community, becoming something of cultural artifact; nobody could call himself a computer scientist back in the later decades of the last century and still be ignorant of UNIX.  Teaching UNIX to sophomores was important, because it could be used to illustrate problems with file management, security systems and passwords, and so on.  For some reason, almost all operating systems began to look like UNIX, for example the DOS operating systems of Microsoft, and later, the Apple operating systems.  It was always considered open source; in other words, anyone was permitted to port it to their computers, within limits.

Today, of course, we are familiar with Android, the operating system developed by Google, which is a descendant of UNIX, via Linux, which is an adaptation of UNIX to the PC architecture.  (In fact, UNIX has been adapted to most computers available today.)

The task that computer educators face today is to find a balance between (*) teaching the cultural environment of programming versus programming, (*) general principles of programming problem-solving versus specific solutions, (*) applications in a peripheral-rich environment versus those in an environment of a simple set of outputs and inputs, (*) choosing between a programming environment specifically designed for beginners, and a trivial application for real-world hardware, such as a smart phone.

It used to be that, at my school, we taught basic programming to even nursing students.  The board that accredited nursing degrees required that every graduate nurse had to have a certain minimum of exposure to computers, since they could not anticipate in which direction medical technology would advance over the next few years.  Today, of course, nurses would never consider learning programming, but would settle for experience with hospital software of various kinds.  Regrettably, programming is evolving into a game for specialists only, and I am rooting for this process to be slowed, halted, or reversed.

Finally, women in computer science are increasingly alarmed at the drop off in the proportion of women going into the math and computer science area.  It has been found that women make excellent programmers.  In fact, some of the earliest applied mathematicians and computer scientists were women, at a time when we would not have expected women to go into any technical field at all.  (In fact, Hedy Lamarr, a well known Hollywood actress, invented a method for disguising the control signal of torpedoes in WW2.  Aspects of her work is said to be used in wireless security technology, but I might have misunderstood this piece of information.)

Into this environment comes the Raspberry Pi, a tiny computer you can buy for around $35, which was intended to encourage British kids to get interested in computer programming.  The very fact that it was an absolutely stripped-down piece of circuitry made it completely flexible.  It was to hardware what Linux was to software.  Now, four years after the first model was introduced, the third generation has even Bluetooth built in.  So much for basics!  On the plus side, more people are likely to get into it (already 8,000,000 Raspberry Pi devices have been sold, worldwide), which means that interest in programming could rise.

Arch

Final Jeopardy

Final Jeopardy
"Think" by Merv Griffin

The Classical Music Archives

The Classical Music Archives
One of the oldest music file depositories on the Web

Strongbad!

Strongbad!
A weekly cartoon clip, for all superhero wannabes, and the gals who love them.

My Blog List

Followers