Sunday, March 27, 2011

Interesting Projects–A Collection

It seems as though teachers are always looking for new projects to use with students. Projects get stale (at least to a teacher who has been grading lots of them for a long time) or seem to not fit with a current crop of students or just never seem right. So the hunt goes on for more. When I come up with programing projects I like to post them here on my blog for use, comments, feedback and in the hopes that people will help make them better. I tag them with the projects tag to make them easier for people to find as well. But recently it struck me that an annotated list of some of the more interesting projects might be in order. So here it is.

Programming Projects Using Arrays This is a collection for the APCS mailing list of projects teachers have suggested for teaching arrays. They should work with any programming language.

 Whack Something Game for Windows Phone 7 – This is a “how to” I wrote for creating a whack a mole style game for the Windows Phone 7. It could easily be used/modified to create a similar game for Windows or the Xbox since it uses XNA Game Studio.

The Credit Card Project – Do you know how credit cards are validated? I think a lot of students would be interested in this project that includes knowing something about the codes that identify types of credit cards and a check digit to validate the number.

FizzBuzz–A Programming Question – this was based on an interview question I read about. The comments are interesting and include both a lot of discussion about this particular project and similar questions. This one uses loops and discussion statements in an interesting combination.

Lines Can Be Fun This is a discussion of some interesting graphical line drawing projects. There is some sample code using Small Basic but you could use these ideas in most languages that support simple graphics.

Would you play this game? A simulation of a card game with the idea of determining if it is a reasonable game to play as defined by being something one can actually win at. It uses random numbers, arrays and loops.

Visualizations and Sorting Some ideas around projects that show or play as in sound how sorting algorithms work. Something to make sorting more interesting than just “magic” behind the scenes.

ASCII Art For Fun and Projects – Old school ASCII art projects may seem passé but a lot of today’s students don’t know about them which makes these ideas “new to them.” And they can be fun.

Monte Carlo Simulation – Slot Machines – How do slot machines work? Add some graphics to this one and really make it rock.

Monte Carlo Simulation – Roulette – how does the house win at Roulette? Random numbers, probability and creating a simulation are all a part of this project.

Who Designed That User Interface – How would you design an ATM interface? Yeah it involves money. Smile This is a chance to not only have students implement a user interface but learn about data checking/validation and how it all fits with usability.

Are You Using a Strong Password – On one hand this is a simple data validation project that looks at characters and does some evaluation. On the other hand it is an opportunity to talk about security, what makes a strong password and why strong passwords are important.

Coding Up A Coded Message – Not surprisingly this is about codes and cyphers. I find that a lot of younger kids are fascinated with hiding messages with codes. This allows for a lot of interesting character manipulation and some good algorithm discussions.

Fun With Formulas Did you know that horsepower was based on James Watt finding that a work horse could lift a 1,000 pound weight 33 feet in 60 seconds? I didn’t either but it makes for a fun project. Sample code in C#, Visual Basic and a screenshot of a cool solution table using Excel. Yep, programming sorts of things in Excel. Who knew? Smile

Fun With Colors Move the sliders for red, blue and green to adjust the color values of a color display. This is the sort of thing designers use for all sorts of color picking routines. It shows something about how color mixing works as well as making a fast and easy project to let students experience success quickly.

Binary Number Game – A lot of traffic comes to this blog from people looking for ways to teach binary numbers. This post describes one good learning game/project and opens the door to more with a little imagination. One might as well make a game out of learning when possible.

The Four Digit Problem – How would you randomly pick a four digit number with no repeating digits? Would you use recursion? You could. Or loops? That would work as well. What’s the best way to do this/

A Simple Check Digit Project This project uses the formula for validating passport numbers. With more and more people needing passports at a younger and younger age this project has some relevance to many. Having a meaningful project to discuss check digits (which are apparently not as inherently interesting to everyone as the yare to me) makes this a pretty good project if I do say so myself.

Wednesday, March 23, 2011

US Imagine Cup People’s Choice Awards


The Imagine Cup is the premier student technology competition in he world. Yeah, I get excited about it. The US finalists in the Software Design Invitational and the Game Design competition (two categories there) and been selected and are making their plans to attend the finals in Redmond Washington in April. Now it is also time for the public, people like you, to have your say on if these projects are genius or not? You'll decide!

Microsoft US Imagine Cup Fall finalists now have new team pages--check them out and get to know the teams: 

Of course I am completely unbiased. OK maybe not. I have a soft spot in my heart for high school students competing against college students so I may have voted for the high school team, Xoz Gaming. Their project, Strain is a Windows real time strategy game where you defend the world against a global pandemic.

I Voted BadgeXozLogo

There are lots of great teams with lots of great ideas. Visit the Facebook page, check them out, and vote early and often (you can vote every day) for your favorite. Oh and by the way there are prizes for people who vote to win as well.

Wednesday, March 09, 2011

Rebirth of DIY Software Development

In the heady, exciting, almost wild West atmosphere of the early days of PCs it seemed like almost everyone I knew was writing software in hopes of making a little extra money. Shareware was big. That was the idea that you would give away the program and if people really liked it they would pay for it. And since there was so little software out there other people were packaging their software in a nice format and selling copies though local computer stores. Computer stores back then were desperate for software to sell to help sell computers. The cost of entry was low – you needed a PC and the development software that came with it. If you were really ambitious you’d buy Turbo PASCAL or some other more professional development environment. The other thing that was big was more or less ordinary people developing small software projects for work. Not necessarily great software but good solid (ok maybe not solid) but cheap and accessible software. Over time though the “real professionals” took over as standards became higher.

We, many of us in the industry, expected programming to become easier to the point where everyone would be programming. That, alas, has not yet happened. What has happened though is that there is a new market for software. Portable devices like Windows Phone 7 have online marketplaces now. So does the set top box video game market! And there are tools that are free or cheap and even easy to use. Students can get development tools for Windows Phone 7 and Xbox 360 from Dreamspark. There are learning resources, some at DreamSpark, and some from other places (App Hub for one) that are also free.

This is sparking a rebirth of the small, even one person, development organization. Students are creating and selling programs on Xbox marketplace and Windows Phone 7 marketplace and making real money. Some though sales and some though advertising supported software which is something that didn’t exist even a few years ago. Another difference with this new environment is that this time companies and businesses realize that they need, or at least want, to have applications for these new devices. There are not really enough people ready and trained to create them (see More Computer Scientists Needed To Create Mobile Apps). What does this mean to students today? I think Mark Guzdial said it well in his post titled The advantage of computing goes to those who create, not those who use.

Sure it is important to know how to use computers and to use various applications but the real advantage goes to those who create. Are we creating enough creators?


Today’s post inspired by these somewhat related articles.

Friday, March 04, 2011

Top Read Posts February 2011

When I look at the blog statistics for my primary blog I am often surprised. Surprised because some posts that I expect a lot from get ignored while others get more attention than I ever dreamed of. Other times I see that posts written some time ago (two and a half years ago in one case in this list) have soddenly returned to activity. And some posts from previous months are still drawing traffic even though they are not currently on the front page. Search engines account for much of this of course. People are still looking up IBM’s Watson and Microsoft’s Kinect for example. And sometimes someone with a large following links to an archived post sending many new people to read that post. So there is logic to the list of top read posts in February 2011 even though it is not always intuitive.

Are Programming languages really languages? – One of several posts written this month that was linked to by the influential Code Project website. There are 21 comments on this post with people taking both sides of the question. I see that as very positive and the comments make for interesting reading. And potentially a good start for an in-class discussion.

Fizzbuzz – a programming question Code Project also linked to this post, one of several project related posts this month – others were Credit Card Project and a link to Kenny Spade’s Triangle Shooter . There were 47 comments on this post as person after person tried to impress readers with their great code. You’d have thought I was looking to hire someone. With a wide range of different solutions and programming languages demonstrated I think the comments are very useful. I only wish there had been more discussion of the code – though there was some.

Do your students understand this cartoon? A Golden oldie. This post was written in 2007 and is a discussion of a cartoon from xkcd showing an SQL Injection exploit in an interesting way. A blog primarily focused on global warming of all things ( ) recently used the same cartoon as an example sending readers to this post for the explanation. Apparently a lot of people were interested in that explanation. This proves once again that once something is on the Internet you can never tell where it will show up.

What does Watson mean? IBM’s Watson computer recently beat the two top human champions of the Jeopardy! quiz show. Interestingly enough a Congressman, who had been a five-time winner on the game, recently beat Watson in a short match – see IBM's Watson takes on lawmakers in game effort

How does Kinect work? This post from last November continues to draw in traffic via search engines. I recently updated the list is resource links to include an interview I recorded at Boston’s Museum of Science where I explain a lot of what goes into Kinect. If you are interested in Kinect then check it out.

Kindergarten computer science Some information about computer science in the much younger grades. I am seeing a lot more interest in this lately. I need to address it more often I think.

Teaching learning and the job interview – Posts on how to teach are as interesting to people as those on what to teach. This post takes about a could of teaching methods that are interesting if not exactly convincing to everyone.

How not to teach programming See what I mean about “how to teach” being interesting? This one also has a bunch of comments and as usual my readers leave a lot of wisdom in the comments. They make the post more valuable than what I originally wrote. So if you missed the discussion in the comments it may be time to revisit the post.

Resources for teaching binary numbers Month after month search engines break readers to this post from April 2010. Apparently this is a big issue. So also check out my blog entries tagged with the Binary key word if you are looking for still more.

Characteristics of a good programming project Computer science teachers are always looking for good projects but what exactly is a good project? Some of my thoughts are here as well as links to some posts on the subject from Hélène Martin.

Tuesday, March 01, 2011

Dream. Build. Play. is back for 2011


Honestly if you are a student you REALLY want to enter the Imagine Cup game development competition. Really you do. But if you missed some of the deadlines (tsk tsk tsk) or you are looking for another game development competition  to enter than Dream. Build. Play may be for you. If you are a hobbyist game developer, or you are that undiscovered game development expert with an idea for a great Xbox 360 game, than Dream. Build. Play is definitely for you! Registration is now open and continues through May 17th 2011.

The Dream.Build.Play Challenge is back, and we’re more excited than ever to see your ideas come to life. Build the next mind-blowing game for Xbox 360® using XNA Game Studio 4.0, and you could win the prize and fame! Set the power of your imagination free – and let the game challenge begin.
Learn more about the Challenge »

Students be sure to check out DreamSpark for all the development software you could possibly need. Oh and need I remind you that it is free!