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

February, 2007

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Visual Studio or VS Express Editions for the School Computer Lab?



    Teaching computer programming requires good software development software. The Visual Studio family of products is the most modern state of the art tools available today. They are used by top professionals and yet are approachable to students and hobbyists as well. In this day of tight school budgets cost is always an important consideration when buying software for a school computer lab. Microsoft provided two options for outfitting a school computer lab with development software – MSDN AA and the Visual Studio Express editions.

    The Visual Studio Express editions are available as free downloads while there is a nominal charge for membership in the MSDN AA program. Some information about both programs should help determine which source is the right one for your school.

    What is included in each option?

    The MSDN Academic Alliance program for high schools provides a copy of Visual Studio Professional; an Interactive Development Environment that includes C++, C#, J# and Visual Basic .NET all in one package. Membership in the program gives a license to install this software on all computer lab computers, teacher preparation computers and the personally owned computers of students enrolled on programming classes. This membership is currently $299 for a high school department. The MSDN AA program also includes:

    · Access to the Member's Area of the Web site

    · Private MSDN Academic Alliance newsgroups

    · Additional "Members Only" special offers

    · 2 Professional Technical Support incidents

    · Other benefits listed at

    The Express editions are free downloads and each edition supports one programming language or web development. There are separate editions for C++, C#, J#, Visual Basic and Visual Web Developers and each one must be installed separately. These editions are simpler and easier to use than the full Visual Studio but do not include all of the features supported by Visual Studio. They are fairly small downloads and do not take up as much room as the full Visual Studio.

    Why would I select the Express Editions?

    The Express Editions are completely free for the school and for students. They are reasonably sized downloads and can be installed easily on student’s personal computers without the school having to be responsible for providing CDs. The Express Editions come with simple to use Starter Kits, programs that are interesting and functional that students can learn from, modify and experiment with, as well as being a simplified IDE. If you have small disk drives and space in an issue the Express Editions can help there as well.

    Why would I select MSDN AA?

    Most schools choose MSDN AA because they are teaching multiple programming languages (Visual Basic and C++ or C# for example) or because they want to use development features that are not in Express. Visual Studio includes the Class Designer and Object Test Bench that can be very useful in teaching objected oriented design and programming. Visual Studio also supports programming for mobile devices (Smart Phones, Pocket PCs etc) with built in emulators and additional library support. Some teachers will want to move directly into web development from the same IDE as they teach desktop programming.

    Generally we think that schools that teach one course or one programming language will find an Express edition to meet their needs. Schools with more advanced programming offerings that include multiple programming languages, mobile device development or courses that include programming for the web will find the MSDN AA programming and the full Visual Studio it provides well worth considering.

    More information:

    MSDN Academic Alliance (High School)

    Visual Studio Express

    Visual Studio Main Page


  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    People Who Know Nothing About Schools Telling Us How to Fix Them


    Today's rash of quick fix answers started with Steve Jobs telling us the teacher unions are broken in the worst possible way. Principals can't get rid of poorly performing teachers. Plus Jobs says we need online books that are updated like Wikipedia. Brilliant job of stating the obvious and repeating things everyone in education knows. Yes, teacher unions help protect the jobs of poor teachers and yes textbooks are not being updated fast enough. I have yet to meet a teacher, a principal or a school board member who doesn't agree with those statements.

    Don Dodge jumps in to support Jobs and to add that the other part of the problem is that principals have no way to reward top performers. Is there someone in education who doesn't know that this is a problem? It is a problem hardly anyone wants to fix though because it depends on people being fair and no one respects principals enough to give them a job like that. Robert Scoble agrees with both Jobs and Dodge and suggests that teachers need to be paid more. And he should know because he used to be married to someone who used to be a teacher. They all mean well but the problem is bigger than they think it is. In fact it is much too large to cover in a blog post. One of these days I'll write a book.

    Heaven save us from experts. They all seem to have one thing in common - they think that teachers are, if not the only problem, the largest problem with American education. By my reckoning there are several groups that are a much larger problem. They are:

    • Government officials and the rules they lay down
    • Parents and the lack of support they give education
    • Students and their lack of willingness to do their part
    • Voters for not supporting the needs of good education

    Yes there is work that can be done to improve teaching and teachers (let's start with schools of education by the way) and also school administrators. No question that there is room for improvement. But for the most part we are looking to fix large problems by fixing small things. Look at it like trying to fix a car by putting new tires on it while ignoring the fact that the engine is missing.

    Every time the subject of school vouchers comes up someone tells me "schools that receive vouchers should have to follow the same rules that public schools do." Let me translate that to English. "Schools that receive vouchers much be required to fail." The government creates sets of rules with fairness as a theoretical goal but with a practical effect of making money for lawyers and life hard for teachers. It's not really about education as much as it is about control and covering peoples rear ends. It is about taking the easy way out regardless of results.

    Take some of the aspects of no child left behind for example. If a school is failing the principal will be replaced. Will the new principal have any more power to effect change than the person they replace? Good grief no! That would be wrong. Is it any wonder schools don't improve. Or better yet, if the school doesn't have enough resources to do a good job let's take some of those resources away until they do a better job. Yeah that makes sense. If the board is too short cut it again.

    Parents? Oh you don't even want to get me started on parents. Help a teacher control their child in class? Oh no that is the teacher's job. And oh by the way the child has heard the parent say that they don't respect teachers because people who make that little don't deserve their respect. And the parent who explains that the reason their child's report is word for word the same as the article in the Encyclopedia is coincidence? What about the parents who take their kids out of school for a week (or more) for a family vacation and demands that the teacher make it up when the child returns? Ask any teacher and you'll get stories like that for hours. How do we hold parents accountable for helping their children learn?

    What about the student who refuses to do the work? Or who is disruptive in class on a regular basis? Why do we hold a teacher responsible for a student who thinks that filling in the bubble sheet (for a standardized test) in a pretty pattern is more fun than actually trying to figure out the answers? Or the student who comes to class to sleep because they were up late watching their friends play hockey? Or they worked late earning money for designer jeans and a new iPod? My father believed my job as a school aged child was to be a student. That's what I told my son his job was. In some parts of the work that is still the case. Not in the US of A though. Fix that problem Steve Jobs! No, you're not interested because it would cut back on iTunes sales wouldn't it!

    I hear a lot of talk from voters about school issues. Cut the budget. Books out of date? Too bad. Computers old? Too bad. Teachers can't afford to live near work? Too bad. Cut cut cut. Do more with less!

    Now I'm not a real expert. Yes I did teach in the classroom for nine years. I only spent one year teaching in elementary schools though. Although I did teach every grade from kindergarten through eighth grade that year I spent most of my teaching in a high school. I did serve six years on a (private) school board and another six years as an elected member of a public school district's budget committee. My wife and son are both public school teachers. My son teaches special education BTW. So I think I understand a little bit about how schools work. But I'm sure people will be happy to tell me where I am wrong.

    The problems are huge. The need is for a complete restructuring of our education system. We need more choices for students and more responsibility placed on them and their parents. We need a way to remove the kids who refuse to learn and extra support for the students who want to do more (that means for gifted and for special needs both).

    We need a new culture that values education above sports. We need teachers who are trained to teach using technology and who are provided with the resources (including paid training like most other professionals get) and the chance to be rewarded for doing a good job. We need principals who can get rid of bad teachers, reward good teachers and deal in a fair way with problem students and parents. We need testing that is reasonable but we need to lose the idea that we can test quality into the system. We need to teach the things that are hard to test. Things like creativity, problem solving, critical thinking and initiative. We need parents and other adults who lead by example - being life long learners and putting their time and money into education for themselves and their children.

    As hard a problem as Steve Jobs may think fixing education is in actual fact it is harder than that.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Programming Proverbs 1: Define the problem completely


    This is the first of a series of posts based on the book Programming Proverbs by Henry Ledgard. The index for the series is an earlier post and discussion of the list as a whole is taking place in the comments there. Comments on this "proverb" are of course very welcome here.

    For a lot of people "define the problem completely" seems pretty obvious as the only right way to do things. To others, especially lately, there seems to be an idea that one should throw something together based on partial understanding, take it to the end user to see where they are, and then go to the next step. This really seems like a waste of time to me. Oh to be sure there are often times when the end user doesn't know what they want when a project is started. Someone commented earlier that "Walking On Water and Writing a Software is easy, if the Water and Specifications are FROZEN." There is some truth to that.

    Historically software developers have lived with the idea that the specification will change and things will be come if not clearer at least different. That often makes it difficult, if not impossible, to define the whole system before starting.

    But actually all of that is both a digression and a missing of the point. While for some people this proverb means understanding the whole system that is often, some would say always, a problem. And I think looking at that large a picture misses the point. I think that at some point one has to reach a granularity for which this proverb makes complete sense. That granularity is when one reaches a point when the amount to be coded by one person is reached. Is that a method? A class? A module? A complete program or even a small system? At that point it is a mistake not to have the problem defined and understood completely. To do otherwise is to ensure that the code will break when it comes into contact with expectations of the user or of other code. Code that is checked in with other code and does not work as expected means that the problem was not defined completely enough and someone started coding too early. There is no excuse for that in my opinion.

    This idea of defining the problem completely has interesting ramifications for the teaching/learning environment. When a teacher defines a project for an assignment or an exercise for a test they assign to students there is an obligation to spell out the requirements completely. If there is ambiguity it should be there on purpose and to allow some leeway in problem solving. Students have an obligation to read and understand the definition completely before beginning to write code. Alas they seldom do. They are a lot like some professionals I have worked with I am afraid.

    What I used to say to students was "I am much too lazy to write a lot of extra words so if they are there you'd better read them all." Assumptions are risky business and no less so where graded work is involved. I encouraged questions and often I re-wrote project assignments to make sure I answered those questions in the future. This was valuable both to the student, who learned to ask questions, and for me as I learned to better specify what I wanted. We never stop learning.

    What is the problem? What are your inputs? What are your outputs? What do you need to know and to do to get from the inputs to the outputs? Unless those things are defined it is much too early to write code.

Page 1 of 10 (28 items) 12345»