Computer Science Teacher
Computer Science Teacher - Thoughts and Information from Alfred Thompson

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Just Add Imagination

    • 148 Comments

    I met a 12-year old programmer yesterday. He was on a field trip to the Microsoft Technology Center in Chicago with his middle school. He'd brought a USB storage stick with a program he'd written on it to show us. What he had written was a very cool web browser. He told me it included about 20,000 lines of C# code.

    He demonstrated the program for the group and I have to say he impressed a lot of people. This web browser had the features you would expect such as tabbed browsing but it had a lot of features I'd never thought about. For example it was a simple menu option to have the program look up the ownership of a domain using whois. And there were other options to get other bits of information about the web site as well. Frankly there was too much to see in a short period of time for me to absorb it all. I gave him my card and asked him to email me. Frankly I want to try his program out for myself. I also want to know more about how he did it as well.

    There were a couple of messages I took from this experience. One key message was that young students are very capable of thinking outside the box. They are quite adept at looking at a tool (in this case C# and the .NET Framework) and putting the pieces together in new and interesting ways. Another is that Visual Studio and the objects in the .NET Framework clearly make a lot of things easier to include in a program than ever before. This student was taking full advantage of them and had created a very powerful application.  The combination of opportunity, the right tools and a young, energetic creative mind is a very wonderful and powerful thing.

    I just wish we could introduce programming to more young students. This student is 12 but has already been programming for three years. Bill Gates started programming when he was 13 so this young student has a four year head start. Just imagine the possibilities.

    {Note: I have a brief follow up on this student posted as he enters high school.]

    [Note to Digg readers - please look around and read more of my blog. I'm glad you stopped by.]

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Why are all programming languages in English?

    • 93 Comments

    Last week I was at the CSTA Computer Science & Information Technology conference in New York City. One of the great thing about events like this is the hallway conversations that just happen. When you get a lot of interesting people together the conversations are interesting by default. I had one such conversation with Dave Reed, computer science faculty at Creighton University and past Chief Reader of the Advanced Placement Computer Science exam. We started by talking about programming by people whose language is not English. The keywords they use are, for almost all languages, in English. Comments, variables, user written classes and methods though are in their own language. How confusing might that be? Dave has used a program written in German in some of his classes and asked students to explain what is going on from context. That’s an interesting exercise for sure. On the other hand why not translate the keywords?

    Many years ago I heard Grace Hopper talk about an early compiler. As I recall they wrote this sample compiler and finished it before it was due. They thought about the fact that keywords are really just symbolic so why not make them in other languages. They wound up adding support for several languages into the compiler. Unfortunately the committee who reviewed the final project thought that was far to complicated to actually work and concluded the demo was faked. Ah, the early days on computers when people really didn’t understand what they could do. To this day compilers seem to only understand keywords in one language and that language is almost always English.

    It is not just Americans or even other English as a first language speakers who are doing this. Niklaus Wirth who designed PASCAL among other languages was Swiss. No doubt he could have used any one of several other natural languages but he used English. Off hand I don’t know of programming languages that use non English keywords. If there are some, and there must right, they don’t appear to be common. Anyone know any?

    I’m not sure why this is. Most modern computer design was done in English language countries but that should not be a limitation. The other thing I really don’t understand is why IDEs don’t support non-English keywords. I mean how hard could it be to add a parser that uses different (or additional) keywords? It’s been a long time since my graduate course in compiler design but as I recall parsing was only a small part of the whole process. Converting things to meta data should be a simple matter. Expensive perhaps but not critically so. Anyone know of IDEs that do this sort of thing? And why are people whose first languages not designing their own languages using non-English keywords? I can understand something about wanting widespread acceptance and that most experienced programmers know English keywords if not a real working knowledge of English. On the other hand having kids learn in their native language strikes me as potentially a good thing.

    Just something to wonder about today.



  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Object Oriented Programming is Dead

    • 10 Comments

    OOPtombstone

    OK perhaps not dead but Robert Harper, a professor at Carnegie Mellon University, says(Teaching FP to freshmen) that object oriented programming and design is “unsuitable for a modern CS curriculum.” More of the quote in context is:

    "Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum."

    As you might imagine there is some dissent in the comments. When I posted this link to my Facebook page there were some 16 comments, mostly in disagreement, in a short period of time. One person, who hires people for industry responded with “I'm tired of interviewing interns who know Haskell but can't code up strlen() in C. ” But as Robert Harper says in a reply to a comment on his post “Our goal at Carnegie is provide students with an education, not training.” What does that mean anyway? Is there a conflict between industry and academia? Academics often believe that “There are plenty of opportunities for them to learn the old ways, and to pick up industry practices on the fly” while industry hiring managers lament the fact, as one VP told me, that it takes an average of a year and a half to turn a recent college hire from a good school into a fully productive software developer. Is is any wonder that many companies prefer not to hire people right out of college?

    I’ve seen programming paradigms come and go. I started programming as industry (and academia) were adopting structured programming. That was a big advance at the time but required some changes in the way people thought and designed code. Later I lived through the long, slow and at times even more painful transition to objected oriented programming. Are we entering the age of functional programming? Perhaps. But perhaps not to the exclusion of other paradigms.

    We do have new needs today. While first structured and later OOP developed to support the needs of larger programs and larger teams of developers as well as the needs of dealing with more data today the key new issue is parallelism. One of the design goals behind the development of F# (a functional language that is built into Visual Studio) is parallelism and making it easier to spread work across multiple processors. Clearly that is where we have to go to continue to be able to take advantage of the newest hardware. But does that mean OOP can become optional or that we can wait for students to learn it after college? That I am not so ready to buy.

    Even at the peak of OOP mania I have maintained that not everything has to be an object and that a mix of paradigms would/did/does work. I think that is still going to be the case even as functional programming grows in usage and popularity. But will old style programming completely go away? I don’t think so.Will objects go away? Not a chance.  I think universities, especially those who provide an “education not training” do their students a disservice if they ignore the reality of what is currently in the field. The handwriting is on the wall and functional programming is going to continue to grow in importance. But ignoring OOP now is not doing anyone any favors. Just my 2 cents.



Page 1 of 618 (1,853 items) 12345»