Welcome to MSDN Blogs Sign in | Join | Help

Microsoft Visual Studio Middle School Power Toy 1.0

The Microsoft Visual Studio Middle School Power Toy 1.0 was originally created by Microsoft China to help meet the curriculum needs for teaching programming in that country. According to regulations/policies of China’s Ministry of Education (MOE) almost all Chinese high school students need to learn computer programming. Bring that up at the next meeting you attend where the need for programming/computer science is questioned! But I digress. This week the English language version of these tools were made available.

The Power Toy is a set of five tools that add into Visual Studio to help beginners. These tools are a free download. Three of the five work equally well with both Visual Basic and C#. Two of them (the assistant class designer and flow chart creator) only work with C# at least for now. The following descriptions comes from the download page. I plan to have individual posts on each of these tools in the very near future.

  • The Visual Sort Designer Control is a supplementary teaching tool developed to help middle school students learn the basic concepts, algorithms, and implementations of popular computer sorting algorithms. It supports bubble and insertion sorting. The control generates initial values automatically and demonstrates intermediate states in the sorting process. It also generates sorting source code for both Visual Basic and C#.
  • The Visual Search Designer Control is a teaching tool developed to help middle school students learn the basic concepts, algorithms, and implementations of popular data search algorithms. It supports binary and sequential searches. The control generates initial values automatically and demonstrates intermediate states in the searching process. It also generates source code for both Visual Basic and C#.
  • The Visual Declarative Designer is an intuitive variable declaration tool designed for novice programmers. During the coding process the student can declare variables of various types and generate the corresponding source code. Visual Variable Declarative Designer provides a visual approach to variable declaration. Teachers in the Information Technology (IT) field can use this designer to teach students the basic concepts of variable declaration and naming, variable types, access modifiers, and initial values.
  • The Assistant Class Designer is a visual class designer intended for novice programmers such as middle school students. During the design process, students can easily add classes, properties, methods and events. The designer also generates source code that can be inserted into a project and modified as needed. By using this class designer and code generator, complicated classes can be easily created and configured. The Assistant Class Designer provides an intuitive approach to designing classes and helps students to understand key object-oriented programming concepts such as classes, encapsulation, inheritance, and polymorphism.
  • Visual Programming Flow Chart is a supplementary teaching tool designed to help students understand program control flow. It generates flow charts for functions and saves them in the JPG picture format. This tool is easily activated from the Visual Studio Integrated Development Environment (IDE) by simply right-clicking on a function name and choosing “Generate flow chart…” from the context menu. The resulting flowchart can be customized by changing its colors and other effects. This visual tool provides an intuitive way to explore source code, to examine its control flow, and to identify logic errors.

Opening On the Academic Relations Team at Microsoft

Have you ever thought “Alfred has an interesting job. I’ll bet I’d like to do that” or perhaps “I’d love to show Alfred how the job could really be done” or even “Boy I’d like to work with Alfred.” Well if so, there is an opening on the academic relations team based in the Pacific Northwest. You can read about it here or if that fails go to www.microsoft.com/careers and do a search on the Job Title: Developer Evangelist – Academic.

This is a great team and  besides being made up of some of the smartest and most interesting people at Microsoft we get to work with the best and brightest students and faculty members in the whole country. This is a job where your brain can get full long before you get bored.

It’s not for the stay at the office doing paper work or writing code types. I call this a “make friends and influence people” sort of job and a personality is absolutely required. This is for people who like to get out and meet people in person as well as online. Presentation skills are very important as you’ll be giving talks to all sizes and types of audiences. You’ll need to have and maintain some serious technical cred as well. If you have some teaching background (or perhaps a textbook in your resume) that would be a big plus because understanding the academic world and how it is different from the business world is important.

So if you think you are interested check it out and apply online.

Posted by Alfred Thompson | 0 Comments
Filed under: ,

Teaching About Error Messages

Here is a cartoon from Office Offline  that reminds me of the sort of messages students used to write.

quad neg

OK maybe they were not that bad. But it was amazing the sort of things students though were acceptable messages. Messages that talked down to people, called them names, used generally impolite language, and just plain weird stuff. I think this is because, in part at least, they thought no one would ever read the messages but them and me (while grading.) Perhaps they would show it to friends and they wanted to have some fun. This is the sort of thing I often commented on in reviews of programs though. Why? Because I wanted to instill good habits and good practice.

Teachers can not reasonably demand full professional quality work (though it is a nice goal) but I think that teachers have to take assignments seriously and insist that students do as well. This is especially true for programs that have to interact with users. Many computer programs are just too hard and too unfriendly for people to use. Getting students thinking about fixing that problem early is the least we can do.

BTW look through the archives of Office Offline some time. If you can’t find a cartoon to hang on your wall or door I’d be surprised.

Examples and Exercises

Leigh Ann Sudol has an interesting post titled The Beauty and Elegance of Computer SCIENCE. In it she talks about what makes a good example or exercise and the difference between an exercise and an example. One thing she leaves out, or perhaps just doesn’t spell out, is that good examples and exercises should take advantage of the power of a computer. I first heard that in a workshop taught by Mark Stehlik (who is on the faculty of Carnegie Mellon where Leigh Ann is currently a grad student). Mark pointed out that if you give a student a piece of code that does something they can do in short order with a calculator or worse still in their head their thought is going to be “well what use is that?” And they’d be right.

A good exercise/example should really require a computer. Some years ago I replaced the simple “convert Fahrenheit to centigrade” example that I used to introduce writing formulas in a programming language to an example where the formula was tied to a slider.

image

As an example it takes me a few minutes to set up which I would do before class. As an exercise it might be too easy for students to get hung up in the user interface so I might not use it. If I did I would give them the UI pre-built so they could focus on the formula and understanding how the assignment statements worked. For teachers who avoid GUI programming, and I know many who do, the possibility exists for creating a conversion table. Though the problem with that is that it requires loops so this would have to be saved until later. But the beuty here is that the GUI makes is so easy to try multiple values in seconds that students have more fun with it right away.

Which gets to the next big thing in Leigh Ann’s post – the beauty of computer science. Examples give an instructor a chance to go beyond the specific case and explore the wider world of the concepts involved. One of my favorite unexpected, unplanned moments was once when I was teaching loops in C++. Somehow I got off on the tangent of showing loop syntax in several other languages. I think that besides C++, I talked about FORTRAN, COBOL, Assembly language and of course Visual Basic.  C# and Java were close enough that I seem to remember talking about them as well. It was short but let us really discuss what a loop was all about. What are its pieces and why does it work – beyond the syntax of a specific language.

Students later told me that they got a lot out of that lecture and that they found it helpful later on in their academic careers. Wow, who knew! But that is what can happen with a good example. It can start discussion and show off a lot more (and more interesting things) than just syntax. It can open minds to the possibilities. We really need to think about the examples we use more often then I think most of us do. I know I need to think more about them.

Looking For More Computer Science Teacher Blogs

In my RSS reader (and in my blog roll on the sidebar) I have seven other blogs that focus mostly on high school computer science education. Some of those bloggers post more than others (Tom I’m waiting for another update) but they are all interesting and I learn from them. But I want more. There have to be more people blogging about pre-collegiate computer science education but I’m having no luck finding them. So I am hoping that my readers can help. If you have a blog that relates to K-12 computer science, especially if you are a practicing teacher, please leave a link in the comments. And if you read other related blogs and want to recommend one or several please leave those links in the comments as well. I’d really like to see the community online grow and be more helpful and supportive. There are a lot of great ideas out there that we can benefit from sharing.

It goes without saying that I am looking for more people to read here as well. Have you told a computer teacher about this blog yet? :-) And if you are interested in this blog please visit some of the other blogs in my set of lists.

Periodic Table of Videos

It’s a amazing the teaching aids one can find on the Internet these days. How about a short video including a demo on each of the elements in the periodic table? Yep, there it is! The University of Nottingham has created a periodic table of videos that may be very useful in many classrooms. Actually I found it most interesting for my own self education. Of course the fact that the video on hydrogen includes an explosion helped to get my attention.

Experiments done by an enthusiastic science teacher really helped spark my interest in science as a student. Of course all science classes include some experiments and demos but who has time and resources to do a talk on every element in the periodic table? Not many! So this set of videos looks to be a great resource to me. I plan on watching a number more of them over the next few days (after work hours really). I’ve learned a lot already. I think I have a much better understanding of “heavy water” from the hydrogen video for example. Great stuff!

You can subscribe to the channel (they are updating some of the videos) at the periodicvideos channel on YouTube or visit the home web site at http://www.periodicvideos.com/

[Hat tip to Miguel Guhlin whose blog post pointed me to this site and mentions that this is the sort of thing that blocking YouTube prevents teachers and students from using.]

Posted by Alfred Thompson | 0 Comments
Filed under: , ,

Goof Off Monday

I have nothing serious today. I sent something to the AP CS mailing list and got back a lot of out of office messages. I'm guessing a lot of people, especially teachers, are just relaxing these days. So today, just ways to have some fun and avoid real work. My friend Hilary sent me the following information last Friday.

We recently asked a number of students to use Popfly and submit a Popfly creation (a mash-up or a game).  10 of the games that were created were picked by the Popfly Team in the Games We Love  http://popflywiki.com/GamesWeLove.ashx entry in the Popfly wiki.

Please find the links below … beware … these games are fun!

http://www.popfly.com/users/mtaipan/theGunner

http://www.popfly.com/users/solidcell/Move%20It

http://www.popfly.com/users/karafong/ChickyBang

http://www.popfly.com/users/Dauble2k5/Shoot%20for%20the%20Stars

http://www.popfly.com/users/sachint/Demon%20Attack

http://www.popfly.com/users/hcnguyen88/ninjaDuel

http://www.popfly.com/users/Borealid/Bouncing%20Babies

http://www.popfly.com/users/dinko628/football

http://www.popfly.com/users/DarkStarX1/Alien%20Invaders

Now if you insist on educational value you can open up and see how each of those games was developed and modify them to suit yourself. Go ahead and list this as research.

Posted by Alfred Thompson | 2 Comments
Filed under: ,

Turning Consumers into Creators

One of the talks in the Microsoft booth at NECC that I attended was Jacqueline Russell explaining Popfly. One of the things that hit me was when she said the goal behind what her group was doing was to turn “consumers into creators.” I’ve been thinking about that a lot since then. I have come to the conclusion that turning consumers into  creators should be a basic goal of education.

Now one of the knocks on industry when they try to get involved in education is that all “they” want is mindless consumers and rote workers who don’t think much. But honestly I think those days, if they existed at all, are fast disappearing. Maybe the early days of the industrial revolution with narrow focused assembly lines could get along with workers who didn’t think but today’s information economy can’t afford that sort of worker at all. I recommend a recent blog post by Jonathan Rosenberg, Senior VP at Google who tells students to “Major in Learning.” [Hat tip to Vicki Davis who pointed me there]

Those are not rote memorization and mindless consumer thinking that Google is looking for. Frankly I’ve never worked for a company that looked for things much different than Google is looking for. In fact the list that Jonathan gives is very much like the list I give students who ask me what Microsoft looks for in new hires. Which brings me back to creating creators.

Vicki Davis asked in her blog “What does Major in Learning look like?” To me it is about creating things. Oh sure anyone can memorize data but that is not, to me anyway, real learning and it certainly does not look like majoring in learning. Most people learn best by doing – by actually creating some result, by putting knowledge to work. When I try to learn new things in computer science, be it a programming language, an API, or a development tool I find that reading about it only goes so far. To really learn it I need a project. Best of all is if that project solves a need (need is loosely defined :-) ) that I have. Only by  creating do I really internalize the data/information/learning. I need to be a creator – to create something – in order to really learn.

I think that the “pundit on the platform” style of teaching only goes so far because it all too often doesn’t fit people’s learning styles. Learning is the key thing. We, society, business, industry, need creators. We need people who will go ahead and solve problems with new discoveries, new ways of looking at things, new ways of doing things, new ways of thinking. Training tomorrows (heck, TODAY’s creators) has to start in school. We can’t afford to beat the creativity out of students but rather we need to help them create even more. And more creatively!

Popfly Lessons

There are a lot of very interesting computer science topics that typically have to wait a while before being taught. Or that people have to learn a whole lot of “plumbing” to use. Among these are things like XML, RSS, and using maps (the where things are sort of maps).  Popfly is a very cool mashup tool that lets people use those tools without writing code so it makes sense that it can also be used to help teach those concepts/tools in an academic setting. Or just for enthusiasts who are working to learn on their own.

Well now there is help. Actual lessons, developed by an actual teacher (in this case someone who has actually taught this stuff in a freshmen level college course), for use in actual classrooms. And of course for free. From the description at the Popfly wiki:

Mark Frydenberg at the Computer Information Systems Department at Bentley College in Waltham, MA has created a series of nine lessons about creating Popfly mashups. They are not tutorials. They won’t tell you what to do without telling you why you’re doing it. Each lesson illustrates a basic software development concept – such as structured data, logic, and iteration, or describes how to build a software application that relies on XML, RSS, or mapping data.

So if you are a teacher jump right in and get in ahead of your students. I honestly believe that some lessons like this can help build interest in more formal computer science courses. So use them in an applications course or an introduction to technology course or perhaps just point students who you think might be interested in going deeper to them and cut them some slack time.

Oh and while I’m at it, if you have already tried Popfly (or just been thinking about it) you may want to visit the Popfly team blog to read about some of the new things that were added with the July update. Also over at John Montgomery’s blog you can read about and play a new Popfly game called crayon cannon.

[Edit: Mark pointed out that I forgot to say that I knew him. I've actually sat in Mark Frydenberg's classroom while he taught so I've seen the quality of his teaching first hand. He's a really good guy and a good teacher and Bentley is lucky to have him.]

Terrarium Is Back!

If you were around in the early days of the .NET Framework you may remember a game called Terrarium. I believe that Microsoft may even have had a version running at SIGCSE one year. Bil Simser who is bringing it back fresh and updated via a CodePlex shared source project describes it this way on his blog:

In Terrarium, you can create herbivores, carnivores, or plants and then introduce them into a peer-to-peer, networked ecosystem where they complete for survival. Terrarium demonstrates some of the features of the .NET Framework, including Windows Forms integration with DirectX®; XML Web services; support for peer-to-peer networking; support for multiple programming languages; the capability to update smart client, or Windows-based, applications via a remote Web server; and the evidence-based and code access security infrastructure.

Terrarium was created by members of the .NET Framework team in the .NET Framework 1.0 timeframe and was used initially as an internal test application. At conferences and via online chats, Terrarium provided a great way for developers to learn about the new .NET programming model and languages as they developed creatures and introduced them into a peer-to-peer ecosystem.

Apparently Bil has updated it and brought it to more modern versions of the .NET Framework and is looking for people to help expand and improve it. It is pretty usable already by the sounds of it. There is a client version that can run stand alone and a server version that will let several clients share the same world.

I see this as a great learning tool and potentially a lot of fun. I’m downloading a version now and hope to find some time to play with it. Too bad I didn’t have it before I went on vacation!

Interesting Links – 15 July 2008

I am struggling to  catch up from my vacation. One of the trailing points in my activity is blogging – both reading and writing. I’ve got over 500 blog posts (mostly in the education category – aren’t you all on vacation?) to read. But I’ve come up with a few things already that are worth giving some attention to.

The $40 Billion GorillaBen Chun had an interesting post complete with slide show on his talk titled “Bringing a $40 Billion Gorilla Into Your Classroom: Using Video Games to Teach Computer Science” with some links to some free resources he uses. $40 billion is the projected value of the video game development industry.

Learning Before Learning – A Canadian university student, Aziz, takes on the controversy about students learning things on their own before they are taught them in class in a post called “Learning Before Learning (or getting ahead of school curriculum)”. I have to think about this one still

Imagine Cup Advice – This year’s Imagine Cup recently finished up and involved students from around 100 countries this year. Two university faculty whom I respect greatly have posts about what it takes to make a successful team for a competition like this. Didith Rodrigo from Ateneo de Manila (Philippines) wrote her comments at a post called Moving forward from the Imagine Cup While Rob Miles from the university of Hull (UK) wrote a post called How to Make a Great Imagine Cup Entry A lot of their advice works for any important project (or start up business plan) that has to be presented to an important audience. Well worth the short reads.

Interesting Things Among My Team – I work with an interesting group of people just about any way you define “interesting.” A couple of them are up to special things these days. Clint Rutkas is getting very close to getting his self stabilizing skate board working. He’s got a video of him testing it on his blog here. Clint writes about some of his remaining issues here. I love that he admits in advance that his father is going to say “I told you so.”

The connection between music and math is fairly well known but there seems to be a connection between music and computer science as well. (I don’t just mean things like Dan Waters’ creation of Guitar Matey for the Xbox 360 using XNA either) DeVaris Brown who is a full time high tech member of the Microsoft team is also a professional DJ under the name DJ Fury. So when the Imagine Cup team needed a DJ for a major party in Paris they brought DeVaris along. The interview is here and you may find it very interesting just how computer technology fits into his DJ practice. He uses technologies like SilverLight and Popfly to bring his shows to the Internet. I wish I was a talented and as musical as DeVaris but I’ll probably have to stick with just being better looking. (I added that to see if DeVaris reads my blog. :-) )

Well I have a lot more catching up to do. More interesting stuff to blog about soon.

The Four Digit Problem

So I was remembering a piece of code I had to write once. Honestly I don’t remember exactly why I had to write it. I think it may have been part of a set of patterned data for some test software though. In any case the problem was to generate a four digit random number with no duplicated digits. Now there are lots of ways to do this. A simple brute force way is below.

    Function Digit4() As Integer

        Dim i(4) As Integer
        i(0) = r.Next(1, 9)
        Do
            i(1) = r.Next(0, 9)
        Loop Until i(1) <> i(0)
        Do
            i(2) = r.Next(0, 9)
        Loop Until i(2) <> i(0) And i(2) <> i(1)
        Do
            i(3) = r.Next(0, 9)
        Loop Until i(3) <> i(0) And i(3) <> i(1) And i(3) <> i(2)
        Return i(0) * 1000 + i(1) * 100 + i(2) * 10 + i(3)
    End Function

Yes I left out the comments to save space. (That’s my story and I’m sticking to it) The way it works is to pick a single random digit, then pick a second one looping back to pick a new one if by some chance the digit drawn is the same as the one previously checked. This is done again except that the next one has two numbers to compare against and the final number has three numbers to compare against. It works (I tested it) but it doesn’t scale well.

The task I would assign students is to come up with at least two other ways to solve this problem that are more scalable and then compare them all for performance. I might hint at the word “recursion” which I’ve been thinking a lot about lately. This sample code is in Visual Basic because that is my hack something together language of choice. Converting it to other languages is another exercise left to the student.

Two notes: The best part about this post is all the discussion in the comments so don't miss them. Second is that the "solution" I entered is what students often come up with and not what I would use is a real application. I wanted to get some discussion going and that seems to have happened.

Recursion See Recursion Again

I don’t remember exactly when I learned recursion. If I recall correctly, and I could be wrong after almost 35 years, the version of FORTRAN that was my first programming language didn’t even support recursive subroutine calls. But somewhere along the line I did learn it. While I admit that I had a hard time grasping it at first I thought it was pretty cool once I did. There is no question that it can be a powerful tool in the right hands.

I do remember one memorable day when one of my students discovered recursion accidentally though. It was his second programming course so of course he knew about loops. But this was the first week and we were just starting with C++. This clever student wondered if perhaps he could get the same result by having main call itself. Of course he could but without setting a way to end the loop he also discovered the stack overflow. Now that is a teachable moment!

Recursion has traditionally been thought of as a difficult concept. Not by everyone of course. The people who use functional languages like Scheme and probably F# introduce recursion early – before “conventional” loops. Lately I’ve seen some discussion that recursion should be taught early in all programming courses.

Marty Billingsley of the University of Chicago Laboratory Schools recently said on the APCS mailing list that:

I've found that teaching recursion before loops results in students who are willing to use more of the design tools in their mental toolboxes.

When taught loops first, students find recursion sort of "unnatural" and will only use it when directed to. When taught recursion first, students usually will consider recursion as well as loops when designing a program on their own.

While neither he nor I have empirical data to support this I find this a reasonable theory. I have mixed feelings about using recursion when a loop will do but that may be because I “grew up” in a world where function calls were more expensive in time and memory then they are today. But I want people to think about recursive solutions even when they are not forced into it. More than that I want people to be comfortable with recursive solutions. I still remember a code review some years ago when three professional developers asked me to re-write a very clever routine I’d written to use conventional loops rather than a recursive solution just because they were not comfortable supporting it. It really wasn’t that complex but the idea of using recursion made them uncomfortable.

Honestly though I am not sure where in a textbook/curriculum to introduce recursion or how to start. I’ve really ignored it too often in the past. Do any of you have suggestions of textbooks or other resources that introduce recursion in a good way for beginners who have not already learned loops? This is going to keep me awake while I am on vacation this week. Really it is.

2D XNA Game Tutorial

Over a the XNA blog they have announced a new 2D game tutorial. Two hours of video and other information. I can’t wait to get back from vacation to check it out (just don’t tell my wife :-) )

Teacher Game Institute

So I’m on vacation this week. I’m trying to stay unplugged and away from the Internet. Time to mentally refresh and relax. But I’ve tried to post a few things of interest this week to keep things going. One of the blogs I have really enjoyed reading the last two weeks is Mari Hobkirk’s reports from the Teacher Game Institute that she is attending at Denver University. The first post in the series is here.  It sounds like a really great program and I hope to read about how she uses what she’s been learning when school starts up again.

More Posts Next page »
 
Page view tracker