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

December, 2009

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Learning About Programming Language Design


    Did you ever wonder why a programming language did or did not have a specific feature? Have you ever thought about what a first/learning programming language should look like? What features should it have? What should the IDE look like? Are you curious about a language called Small Basic? If you answered yes to any of these questions then this interview on Channel 9 will be of interest to you.

    Expert to Expert: The Basics of SmallBasic

    SmallBasic is a new programming language aimed at beginners. It was created as a side project of Vijaye Raji, a software developer on the Oslo team. SmallBasic is a very limited language with only a handful of keywords and a small set of concepts that should make building an application on Windows very simple for beginners. However, don't let it's simplicity fool you into thinking that you can't build very compelling applications with it on Windows.

    Here, programming language designer (and de facto Expert to Expert host) Erik Meijer, Oslo architect Chris Anderson, Vijaye Raji and I discuss the details behind, in between and in front of SmallBasic. Why was it created in the first place? Why the VB-like syntax? What's the goal of the language and runtime, anyway, given that there are already beginning languages out there that run on the Microsoft stack? Why is the language designed in the way that it is? Why is it so popular? How will it evolve? You know, typical Channel 9 questions. We go pretty deep here, but we don't touch bottom. It was a lot of fun taking part in this conversation and I am impressed with SmallBasic and the folks behind it.

    During the conversation they talk about what features are there or are missing and why those decisions were made. They also come up with a couple of suggestions that I think show how important conversations are in developing software today.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Web Development or Computer Science


    I love to look at the logs to see how people find this blog. Some of the search strings people use amaze me. Sometimes I’m not sure which to wonder more about – how did that string find my blog or what in the world are they really looking for. Recently I saw a search for “is it better to study computer science or web development” that was a bit of a puzzler. I’m not sure those are separate subjects. Can you do good web development without a grounding in computer science? Can you be a knowledgeable computer scientist without some knowledge of web development? Probably not.

    I suspect that at the heart of this question was a vocational idea. What career should they go into? Programming (which is what many people think of when they think of computer science) or web development (which many people don’t seem to be aware requires some computer science to do well).

    These days most important web pages have database access, active response, and other “programming” that take them a whole level beyond the static web pages of the past. It’s hard to see how one can keep up with the trends towards AJAX, HTML5, Silverlight, Cloud computing and so much more of the direction of the web without a good computer science background. Sure there are self taught people who do great things  but having a good solid base of computer science knowledge would seem to be a big edge for learning the new technologies.

    Related to this is that I keep seeing people list HTML as a programming language. That confuses me. I’ve worked with mark up languages for years (anyone else remember Runoff?) and while they are useful tools I see them as data rather than as programming languages. Are they part of computer science? For sure. They take in data, meta data, process descriptions and much more. But HTML is not a programming language. Perhaps this is part of that whole confusion that has people thinking computer science and programming are the same thing? Are people calling HTML a programming language an attempt by people to try to justify calling web development computer science? If so, I think they are missing the point. Web development is a part of computer science.

    It may not have the prestige in academic circles that other parts of CS have but it is growing in importance in the “real world” all the time. I think we really want the people developing the next big web app (think Facebook, Twitter and to know a bit about “the rest” of computer science. What do you think? Is HTML programming? Is web development computer science? Or is it rightly kept separate?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    The Importance of History in Computer Science


    One of the people I really admire is Erik Meijer who is an absolutely brilliant computer scientist and outstanding communicator. And a real fun guy. One of the things I have heard him say are words to the effect that if you want to know what the next big thing is in computer science look at what was big 20 years ago. I think he is totally correct here. Of course when we reinvent things 20 years later one hopes that we learn the lessons for the previo0us incarnation. But that can’t happen if people are unaware of previous innovations.

    I’m pretty lucky in this regard as I started in computer science over 35 years ago so I’ve seen a couple of cycles already. But what about students today? They can’t remember from life experience but are they learning history either? It’s not clear to me that they are. Oh sure most students get a unit or three on history of computers at some point but how much sticks? And how much is more than cursory story telling? I know that what I taught was pretty cursory. Does it matter?

    Well take cloud computing for example. Is this absolutely new? Not really. The early days of mainframe computers were basically the same thing as cloud computing in many concepts. One had all sorts of remote terminals (think thin clients) that connected though a network (hardwired or leased phone lines rather than Internet) to some system somewhere managed by some people that you probably have no real contact with. Sounds a lot like cloud computing to me. Sure there are differences but that’s the part that matters. What problems did mainframes have? Lack of user control of applications and data. Dependence on other organizations for management. There were reasons why first mini computers and then PCs took over. How do we avoid that in the future without knowing the problems of the past?

    And honestly, between you and I, I think we’ve lost some things from the past as well. While we have great and powerful databases we seem to be short of simple easy to use flat file systems. And command line interfaces used to me easier to use but now we only let experts use them because they pretty much require expertise that they didn’t used to. Most people I know seem to only know two or three operating systems (Windows, Mac and/or Linux/UNIX) This seems pretty limited to me because there was a time when I’d use four or five in the same day. I learned a lot from those days but some of it has been lost.

    The Computer History Museum is a great repository of hardware. If you ever get a chance you should visit. And they do have information on software as well. (I like the computer software timeline on their website) But it is had to understand software without using it or at least digging into the documentation. I’m not sure how we avoid losing this part of our history. Especially if when someone says “back when I was programming in ‘76 …” everyone turns off their listening. Perhaps collecting oral histories is a start. Now if we can just get people to listen to them, learn from them, and move us all forward.

Page 5 of 7 (20 items) «34567