Tuesday, March 31, 2009

Transforming Computer Science in the Gaming Age


Microsoft XNA Game Studio

As I was researching for this blog entry, I came across the Gaming Initiative from Microsoft Research. Microsoft collaborates and provides grants to academia, industry and government to research many fields in computer science, engineering and the basic sciences.

It was from Microsoft Research that I found this study.

Transforming Computer Science in the Gaming Age

Professor Michael Zyda,
University of Southern California

Professor Kelvin Sung
University of Washington-Bothell

Professor Andrew Phelps
Rochester Institute of Technology

http://research.microsoft.com/en-us/collaboration/papers/usc_uwb_rit.pdf

The Question:

How do you attract talented, committed students and transform them into passionate, creative computer scientists?

A New Solution

The authors indicated that by, “tackling the problem head-on, many schools have begun to tap into the well un­derstood passion of their students: video games.”

By offering a variety of game-inspired courses, colleges and universities are beginning to see a resurgence of interest in computer science, and are attracting a more energetic and engaged crop of students.

“The schools we’re working with, the ones offering game-based courses, in some cases are seeing over a 100 percent growth in enrollment. It’s unprecedented the way students are responding to the gaming courses,” said John Nordlinger, senior research program manager, Microsoft Research.

Leading the Way

Each of the authors has taken a unique approach to implementing the gaming courses, but across the board they’ve seen major improvements in the rates of attraction, retention and comprehension among students.

For Zyda, game-based learning offers a multitude of benefits, but most of all, he says, it is relevant to today’s students —offering an avenue to engage with computer science in a way that makes sense to them. “My students are passionate about gaming, so when you approach computer science from the games context you are able to reach them in a meaningful way,” Zyda said.

“By allowing students to get involved with something they really care about and work closely with other students, this program brings back the joy of computing,” Zyda said. “That’s evident in the 60 percent-plus retention rate we have in our gaming degree programs.”

In Zyda’s classes, students work in multidisciplinary teams to approach assignments — building games by lever­aging Microsoft XNA Game Studio as a platform. From musical scoring and graphic design to straight-up computer science, students are able to embrace every aspect of game development and the power of immersion, to make learning about computer programming exciting and interac­tive.

Sung of UWB has grabbed hold of the benefits of gaming and implemented a form of “edutain­ment” in his classrooms based on the Microsoft XNA frame­work. But unlike Zyda, Sung sees gaming more as a tool to root students in the basics of computer science rather than curricula unto itself.

“To create an ideal learning environment, we have cre­ated assignments that allow students to engage with the subject in a more concrete way,” Sung said. “That is, typically, computer science is abstract, so by using game design ele­ments students can access the material in a way that is real to them.”


Phelps’ pro­gram is a hybrid of both straightfor­ward game design and the utilization of game-inspired applications to foster learning. Phelps says his pro­gram gives a more cohesive picture of where games can help across the breadth of intro­ductory program­ming courses.

Our framework is built using C# with the Microsoft XNA framework through the Reality and Programming Together (RAPT) materials and the Multi-User Programming Peda­gogy for Enhancing Traditional Study (MUPPETS).

“When students take these courses, we are seeing an improvement when they are in advanced courses, and they also are exhibiting renewed interest in core computing concepts,” Phelps said. “While there isn’t yet an abundance of data, preliminary results are showing a strong correlation between earlier game-based assignments and success later during more advanced courses.”

What’s Next?

No matter the approach, the results are becoming clear — students and faculty alike are responding to game-based courses, and moreover, students are thriving because of them. Although some concerns remain over the future of computer science and how to attract engaged, passionate students to fuel the next generation of technological break­throughs, all the early data suggests that game-oriented curricula are reinvigorating the study of computer science. These courses are proving a great way to build teamwork and teach multidisciplinary skill sets with comprehensive and engaging work — skills that are necessary in the broader IT industry.

My Thoughts

As I continue on my quest to find research to show if gaming is a good way to introduce programming to students at my school, I am relying on other universities and their research to paint a path for me. If the results are not indicative to what I need, I’ll need to blaze my own trail.

Based on this study, I am interested in learning more about the Microsoft XNA framework. However, I need to give you some background on our curriculum.

Our programming courses are a bit different than other standard university settings. There are many components that are used in developing our curriculum.


First, many of our students do transfer to UF and other prestigious universities. To have a programming course that is challenging, yet appealing that the student wants to pursue computer science, this student needs to have a firm foundation in the structures of programming, especially if they are moving to UF. I know that UF utilizes Java as their introduction to programming course. We use C++, but they are both C-based languages so the transfer isn’t overly cumbersome. The point is that this intro course needs to be relevant and remain transferable. I don't know if a gaming platform is considered "okay" by UF's engineering school.

Second, many of our students are hired by IT industry right out of our classes. Again, these students need to have a good basic understanding of the structures. At SFC, our department has Advisory Committees that tell us what they want our students to know in Information Technology. Most programming industries here in Gainesville have related they would like our students to know Visual Studio and a C-based language. Hence, that’s exactly what we teach. This helps both the first and second type of student here at SFC.

Third, many students don’t want to program, but need an elective that they think may help them in the future and a computer science course is the answer. This student doesn’t really care if the platform or language used is relevant.

I’m not certain if Microsoft XNA is what we need since we need to fulfill expectations for both students and industry. However, I’m going to do a bit of research on this and see where it lands.

If you’ve ever used MS XNA framework, please let me know how it worked for you and your curriculum. I’d love to hear any ideas you may have.

Sunday, March 29, 2009

Rochester Institute of Technology Study - Games as a "Flavor" for CS1

Games as a “Flavor” for CS1

http://research.microsoft.com/en-us/collaboration/papers/games_as_a_flavor_of_cs1.doc

by:
Jessica D. Bayliss
Rochester Institute of Technology
Sean Strout
Rochester Institute of Technology

Bayliss and Strout developed a cohesive CS1 course that provides traditional outcomes from within the context of games as an application area in both the lecture and lab components of the course.

This paper gave details concerning the course setup and the students that were selected to participate in this study. They allowed only beginning programming students and chose across all gender and ethnic minority lines. They had a good sample to conduct the study. The course was conducted over a summer semester (10 weeks) as a distance education course. In addition, the course was free and no credit hours were given. However, a placement test was given at the end of the course and if students passed this placement test, they would move to a CS2 course level in the fall at Rochester Institute of Technology. That would open 3-credit hours to another CS course in which the student may be interested.

Of course, like any other college, several students dropped out for a variety of reasons. Those that remained ended up with great rapport with their fellow students. The study began with 43 students and ended up with 37 at the end of the study. Feel free to read the study on the sample of students that took this introductory course.

I’d like to focus this blog entry on the elements that were introduced and the results of the use of games to introduce programming concepts.

The Course Elements

According to the authors, “Introductory programming sequences teach the core concepts of the computer science discipline: object-oriented programming, software engineering, data structures, and algorithms.”


Our introductory classes at SFC don’t go into this much material in this one course, however, I wanted to see what the results of this research indicated.

The authors chose games because games cut across cultural, racial, and gender boundaries.

In addition, the authors indicated that “in order to avoid the common split between the content of lectures and labs, we chose to integrate game material into both our labs and the lectures while still meeting traditional CS1 outcomes using Java as an introductory programming language. “

The authors did note that, “There is a large body of research supporting the idea students in a cohesive social group are more likely to succeed. The implication for using games as an application area in CS1 is that the course may attract those with similar interests outside of Computer Science. This in turn can foster greater success.”

SUGGESTIONS FOR COMBINING GAMES WITH CS1

The authors declared that, “The visual nature of games is convenient for instructors, as it is fairly easy to see how a particular syntactical construct may be used in a game and logical program errors may show up as amusing visual errors. As a simple example, students were very amused when their grid-based game characters started randomly jumping through walls due to incorrect programming of the character movement routine.”

Topics covered in CS1 Study at Rochester Institute of Technology:


Software engineering - game developers often operate under very harsh ship deadlines since most games must be released before Christmas in order to generate appropriate revenues. Game developers may go into “crunch time” shortly before the game is to be released and sometimes use agile development techniques such as pair programming in order to limit the number of bugs introduced into the end product during crunch time.

Ethics
a) whether or not massively multiplayer games are addictive in a similar manner to gambling and what developers can do for those who play games too often.
b) individuals hack multiplayer games in order to gain unfair advantages over opponents and occasionally source code is stolen and distributed on-line.
c) certain game companies force their employees to remain in crunch time (sometimes working as many as 80 hours a week) when not close to ship dates. This has led the International Game Developers Association (IGDA) to issue a white paper that calls for a greater quality of life for game developers.

Programming - present a sampling of ideas from games that can be used within the context of a CS1 course.

a) Expressions: Role-playing games and collectible card games often involve complicated combat systems. They range from simply rolling one 10-sided die to determine damage to a player character to full blown combat systems that take character level, strength, agility, etc. into account.
b) Modulus: One can use the modulus operator wherever there is a repeated sequence that should repeat every n game clock ticks. Our favorite example has to do with a line of identical horses that all swish their tails in a metronome fashion at the same time. Prime numbers are better if horses should swish their tails fairly independently, since the tails will align at the least common multiples of two horses.
c) Conditionals: Game logic in many games consists of hierarchies of finite state machines. This is because state machines are easy to create and easy to test. Interactive fiction is a good example of a game concept that almost entirely relies on large numbers of conditional statements.
d) Iteration: A game loop keeps the game running in a cycle waiting for user input until the user wants to quit the game.
e) Arrays: Any 2D grid game works very well in studying arrays. As an additional feature, lots of loop practice is easy to fit in while studying arrays. Games with multiple players and/or opponents work well for arrays and can motivate the use of other linear data structures.
f) Objects, classes, and inheritance: Game characters are often inherited from an entity class that includes all kinds of character and game world objects
g) Efficiency: Many games need to distribute the load caused by multiple characters within a small distance from each other that are all trying to move and perform other functions. Given the shear size of many modern games, there are a lot of trade-offs in size and memory and game developers are very careful with how they use data structures.

With the exception of one student, those who made it to the end of the summer class ended up passing the placement exam and moved into CS2 the following fall semester. Many became friends and wanted to be roommates in the dorms the following school year. They did end up forming a cohesive bond with each other as the authors suggested at the beginning of this study.

The results did indicate that not all of our introductory courses should be taught with games as an application area – some people do not like games. Their campus was large enough that they could offer 2 different formats to the CS1 course, but many schools do not have that luxury.

However, the authors did indicate that, “the study has shown that a large percentage of students like learning about introductory programming concepts within the context of computer games.”

My conclusion:

I found this insight from the authors to be very thought-provoking. Our introduction to programming course is not quite as labor intensive as this study suggested. However, I can easily pick and choose the topics that are relevant to our curriculum and try out some of these ideas for games to introduce a programming concept.

I was curious about the use of prime numbers to have horse tails swish independently. What a curious thought! However, it appears that one would need a 3-D interactive program. Are we back to Alice? I just can’t see it happening to our curriculum.

Currently, COP1000 is a dual course in that UF and other universities will accept this course as a CS1 course in their curriculum so it’s imperative that the subject matter we teach is relevant AND the programming language we use is relevant. We currently use C++ and we teach the basic constructs as well as some data structures. I believe that as long as we stay in the C-based language area (C, C++, C#, Java, etc…) this course will transfer easily.

Alas, my quest continues to find the “perfect” environment, along with the “perfect” language and to find the answer about using games to introduce these “perfects” to attract students our CS curriculum.

Any ideas or suggestions would be appreciated.

Saturday, March 28, 2009

Alice - Carnegie Mellon's Answer to CS


Using Alice to learn programming concepts

I did want to use one blog to discuss Alice. In my previous blog I touched on some of the good and bad elements that I discovered when our campus used Alice to teach our Programming Logic course. For those who are following this blog, I wanted to give you a firsthand experience using Alice and why it didn’t turn out so great for our students.

For many of my students, they enjoyed working with Alice. It is interactive and the graphics are amazing. Go to this site to get a quick demonstration of Alice and its capabilities:

Carnegie Mellon University
http://www.alice.org/index.php?page=what_is_alice/what_is_alice

Alice was designed and created at Carnegie Mellon University. In addition, Alice “is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web.”

The reason we initially chose it for our curriculum was for “Alice is a freely available teaching tool designed to be a student's first exposure to object-oriented programming. It allows students to learn fundamental programming concepts in the context of creating animated movies and simple video games. In Alice, 3-D objects (e.g., people, animals, and vehicles) populate a virtual world and students create a program to animate the objects.”

I will tell you that the 3-D effects are amazing and I can see why students are immediately drawn to this program.

The problem comes with the programming – or the lack of it. As you can see on the picture above, on the left side of the screen, you click and drag the commands you want to the textbox to the right. There are dozens of options to choose from and if you’ll notice carefully – the one object the program is currently listing is the sky. Not the skater or the ice or the sign – simply the sky itself. It’s easy to see why you can get passionate with the details. I believe this is where my students became overwhelmed with all the capabilities and options.

If you’ll glance at the bottom of the textbox you see the constructs – do in order, do together, if/else, etc…

I’ve been programming forever and in many different languages, but I know of no language that uses the command “do in order” or “do together”. Beginning students may “get” what that means, but when it does come down to syntax, they will see nothing of the sort – especially in C-based languages.

According to the Alice.org site, “In Alice's interactive interface, students drag and drop graphic tiles to create a program, where the instructions correspond to standard statements in a production oriented programming language, such as Java, C++, and C#. Alice allows students to immediately see how their animation programs run, enabling them to easily understand the relationship between the programming statements and the behavior of objects in their animation.”

The concept of drag-and-drop is nice in that students don’t get caught up in minute syntax details. In a C-based program, forgetting a ; (semicolon) can cause the program to not compile. That alone can get students very frustrated. The drag-and-drop alleviates that frustration. Really – the programmer doesn’t type much at all using Alice. Is that good thing?

Object-Oriented programming (OOP) can be very difficult for students to grasp. I’m for anything that will help with that learning curve and I believe Alice does help in that manner. You literally see how objects work independent of each other and how each object can complete its own task while another object is doing something completely different at the same time. Using the example above, the sky can do things independent of what the skater is doing which is very life-like in our world.

Also on Alice.org is a listing of schools that are currently using Alice. The site posted 1,334 schools. I’ve listed several top universities that use Alice as a tool in their programming curriculum.

University of Alabama at Birmingham:
http://www.cis.uab.edu/programs/alice-festival/

University of Michigan Engineering: http://www.engin.umich.edu/
(this is long so search for Alice)
There were many other top universities listed as well. In addition, there were many high schools and middle schools (even Alachua Elementary) was listed as well.


My conclusion:

As I stated in my previous post, our students found Alice to be both enticing and frustrating. The graphics were absolutely amazing, but it almost distracts from the reason we chose to use Alice – that is, to learn the programming constructs. Sequence, decisions and repetition are the basic constructs we need our students to grasp before heading into OOP and data structures. Instead students were playing with keeping what creatures would pop out of a tree instead of deciding if the ice skater should perform a jump.

Our department had used Karel-the-Robot to learn programming. It is simple and has the capability of using OOP. I may explore this on my next blog.

If you are using Alice in your curriculum, please let me know how it is going for you and your classes. I’d be very interested to know if there is a way to use Alice without all the bells and whistles for a beginning programming course. I believe syntax does have its place in programming so we might as well begin there, however, if using Alice or some other gaming-type curriculum will help them be initially interested, that may be the key to the whole concept here.

I will be researching other universities and what gaming devices they currently use in their programming curriculum.

Wednesday, March 25, 2009

Microsoft's Answer to Enhance CS Curriculum

I found this amazing study from Microsoft regarding the use of computer gaming for computer science curriculum. What was amazing about it was that our college uses the Microsoft Academic Alliance (where students can obtain software for free or for significantly reduced prices). In addition this paper also discusses the use of Alice.

What is so significant about Alice is that our department (Information Technology Education at Santa Fe College) utilized Alice in our Programming and Logic course.

The title of the paper is


Computer Gaming to Enhance CS Curriculum
“Strengthening the CS Pipeline”

http://research.microsoft.com/en-us/collaboration/papers/computergamingtoenhancecscurriculum.doc

The following are a few excerpts from this paper:

· In light of recent enrollment trends in undergraduate computer science (primarily in North America), Microsoft is interested in enhancing computer science curriculum, and correspondingly the student attraction, comprehension and retention rates, with innovative use of computer gaming concepts and assets.

· Microsoft Research has been supporting a number of curriculum initiatives, all meant to provide assets to academia in our Curriculum Repository within the MSDN Academic Alliance Developer Center, (hereto referred to as the Curriculum Repository) in hopes of increasing interest in computer science careers.

· In discussions with Academia and partners in industry, Microsoft has come to the conclusion that one way to improve student interest and participation in Computer Science is to enhance the curriculum with themes that resonate with today’s students. In general, today’s incoming Freshman has spent more time playing computer games than watching TV or going to the movie cinema. This includes women who make up about half the participants in the rapidly growing massively multiplayer gaming market.

· So, by enhancing CS curriculum with game-related sophisticated environments and more tangible results to coding problems, students are more engaged.

. Recently a paper submitted to the National Science Foundation (NSF) by Carnegie Mellon University demonstrated the power of using a computer gaming environment (Alice) to enhance computer science curriculum. They have documented performance improvements for Computer Science freshmen in CS1, showing that when these students use Alice, they achieve B average grades compared with students in the control group (not using Alice), who achieve C average grades. When teaching CS1 with Alice, retention for CS students into CS2 also went up from 47% to 88%.

--------------------------------------------------------------------------------

In my tenure using Alice, I found that my students really enjoyed using this tool to learn programming concepts. Mind you, the students don’t actually code a program per se, they slide over commands that they want an object to do. They must put them in order and to what extent they would like the command to perform.

An example: using Alice, I had my students program a dragon flying around a hot-air balloon. In Alice, every segment of the dragon is an object. That means you control the wings, legs, head, neck, eyes, spines, etc… with a separate command. It is actually very inventive, but for beginning students, it could be a bit overwhelming.

If you program the wing to flap, the wing may not stay attached to the body! Of course, you must go back to your program and control the body that the wing is attached to. If the dragon moves his head, his eyes may not follow and literally be off the dragon!

But, I digress. In this one example, my students spent countless hours in lab and at home finishing this project. Some students had the dragon breathe fire to blow up the hot-air balloon. Some had the dragon swoop down trying to grab some item on the ground. I hope I’ve made my point that students went above and beyond the scope of the project. It was exciting to see my students get so excited about programming.

However, I did find that other students became so frustrated with Alice (see the above scenario) that a simple flap of a wing took hours to figure out. Not only can the wing move up and down, it can roll, jump, and bend. How fast do you want it to move up and down? In what increments – a quarter turn or a half turn? It simply became too overwhelming to many students and they simply gave up. That’s one reason why we tabled Alice and moved to Raptor as a introduction to programming logic. (Another blog posting – be on the lookout!)

In conclusion, there appears to be a fine line where students are eager to complete an assignment and hopefully learn a programming concept, but along that line, many students are simply overwhelmed with all the bells and whistles.

If the games are simplistic in nature to a beginning programmer, the results will show that the student was not only able to complete the assignment, but learned the conceptual lesson being taught. If you’ve ever programmed before, the feeling of accomplishment is like none other!

I’d be interested to know if you have ever used Alice and what you thought about it.

Tuesday, March 24, 2009

Guessing Game to Learn How to Loop Results!

Last week I told you that I tasked my COP1000 - Intro to Programming class to create a guessing game to teach my students the concept of looping.

This guessing game used a random generator call that would return a value between 1 and 100. The program would prompt the user to enter a number. If the number was bigger than the correct answer, a message would display indicating the guess was too high. Likewise, if the user guessed a value lower than the correct answer, a message would display indicating the guess was too low.

The game would continue until the user guessed correctly. At that point, the program would indicate the right answer had been guessed and the number of tries it took.

I was curious if my students would enjoy programming this project more simply because it was a game. Here are a few results of this project:


  • every student in the class actually submitted this project. That's a first.
  • not all projects worked correctly. When you realize that programming a loop is probably one the hardest concepts they will learn when programming, the fact that all programs didn't work was not a surprise.
  • for those students whose project did not work correctly were very interested in getting the project to work so they could show their friends.
  • most students went above and beyond the specs of the project. Some drew funny little pictures (closely related to hangman) as the user guessed indicating that the user should guess correctly before the picture completed.
  • I asked the class if they enjoyed this project and I received a resounding YES! Here's a quote from one of my students:

"Yes I enjoyed this project a lot actually. It was very cool to program a game and then have my friends try it. They didn't even have to ask questions on how to play, it made me feel pretty good. Look forward to the next one."

I have found these results to be profound! My previous posts have been about the successes of other schools in their use of games to teach concepts so this shouldn't be such a big surprise. I'm pleased that my results were aligned with some of my research. It will take more than one project to make this a valid fact, but we are on our way.

I'm currently thinking of a game that my students could program to utilize the next concept - for loops! Previously, I had them drawing figures - such as triangles, rectangles, squares, trapazoids, you name it. Most students completed this project, but not with the enthusiasm of programming a game. Let me know if you have any great ideas!

Sunday, March 22, 2009

How Buenos Aires University Uses Gaming in Teaching Concepts

I came across a study completed at the Computer Science Department of Universidad Nacional del Centro de la Provincia de Buenos Aires. The name of the study is “The Use of Games to Teach Programming Algorithms” by Laura Felice and Martin Fernandez.

I am always fascinated to see how other universities (local and abroad) are teaching computer science courses. I am finding that many are “playing” with the idea of using gaming design and techniques to introduce programming and logic. They are conducting studies each semester to see what degree of measurement that games will bring to teaching programming concepts.

This is exactly where I’d like to be in developing the programming curriculum at my school, Santa Fe College in Gainesville, FL. I don’t necessarily want to reinvent the wheel and what I can learn by other school’s studies will help me develop a curriculum that will be intriguing, fascinating and perhaps exciting to students who had not considered programming exciting.

In addition, this study held extra interest for me. They used C++ in their course in teaching algorithms and programming. Our Introduction to Programming course also uses C++.

Here are a few findings from the study completed by Felice and Fernandez:

The first issue with which students are confronted when writing programs is the problem. Typically, students are confronted with "real-life'' problems, and they provide a program for the problem.


However, real-life problems are nebulous and the first thing they have to do is to try to understand the problem separating necessary from unnecessary details. So, they obtain their own abstract view, or model, of the problem. This process of modeling is called abstraction of the design.


Games are systems based on simple rules and relationships. Many of them can be applied to different situations, so the opportunity of reuse is present many times.


Games are only an instructional resource for us, and teachers can adapt the requirements to meet the course objectives and to evaluate the students. Another advantage of this kind of project is that games have the capability to change the scale, and developers (i.e. students) can use them as opportunities for players to share and critique strategies, then they appreciate this way of learning and they are motivated to get quality results.


The application was developed in C++ standard. C++ was designed with libraries always in mind, and its most useful features are those that help to write portable, efficient, easy-to-use libraries. The main idea is that the application runs in many platforms, so the used libraries are multi- platform.


Felice and Fernandez conclusion:


The experiment of programming teaching with games has been very satisfactory and has helped us reach some interesting conclusions in relation to the effectiveness of this approach. This kind of works enriches the learning not only of the student but also of the teachers who have to investigate and have to plan an appropriate framework to develop the projects and to make a creative job. We consider that it could be reproduced in any Computer Science study program and we think it is an innovative approach that is interesting to be applied. The necessary prerequisites can be provided by introductory courses on programming, computer science, and mathematics.

My conclusion:

The idea that games enriched the learning capability of both the teacher and the student is profound. From these results, it’s obvious that students enjoyed designing and creating games and using the concepts necessary to make the game as instructed.

In my own classes where I assign a game as a project, I see students that will go the extra mile to make hangman literally hang and matching the states with the capitals have extra support by displaying flags, state flowers, state mottos, etc. These items are above and beyond the programming specifications I have laid out for the assignment.

If programming a gaming project is fun, the student will enjoy making the game work.

I have assigned a guessing game as the next project in my COP1000 – Introduction to Programming class. I will let you know the results and quality of the projects I see this coming week. Stay tuned!

References:

Felice, L. & Fernandez M. (2006). The Use of Games to Teach Programming Algorithms”, Departamento de Computación y Sistemas. Facultad de Ciencias Exactas. UNCPBA Tandil. 7000. Buenos Aires. Argentina

http://www.isedj.org/isecon/2006/2525/ISECON.2006.Felice.pdf

Friday, March 20, 2009

Using gaming in learning

When I read this paper from James Gee on how games help in learning concepts, I noticed that several ideas were evident. First, game designers do take ownership of the game they are designing. They will work harder and solve more problems when they are creating something they feel is worthy of effort. I believe that is true for all students. So if we know this information, the real question then becomes:

How can we make learning in and out of school, with or without using gaming in learning, more game-like in the sense of using the sorts of learning principles young people see in good games every day when and if they are playing these games reflectively and strategically?

As many of you may already know, Plato in the Phaedrus famously complained that books were passive in the sense that you cannot get them to talk back to you in a real dialogue the way a person can in a face-to-face encounter.

Games do talk back. The designers programmed it that way. In fact, nothing happens until a player acts and makes decisions. Then the game reacts back, giving the player feedback and new problems. In a good game, words and deeds are all placed in the context of an interactive relationship between the player and the world. So, too, in school, texts and textbooks need to be put in contexts of interaction where the world and other people talk back.

Designers and players are thereby encouraged to take risks, explore, and try new things. In fact, in learning or creating a game, failure is a good thing. Facing a boss, the player uses initial failures as ways to find the boss’s pattern and to gain feedback about the progress being made. School too often allows much less space for risk, exploration, and failure.

Customized curricula in school would not just be about self pacing, but about real intersections between the curriculum and the learner’s interests, desires, and styles.

Game designers have a real sense of ownership over what they are doing. Gamers almost always give verbal information either “just in time”—that is, right when players need and can use it—or “on demand”, that is, when the player feels a need for it, wants it, is ready for it, and can make good use of it. Information should work the same way in school.

Games encourage players to think about relationships, not isolated events, facts, and skills. In our complex, global world, such system thinking is crucial for everyone.

Reference

Gee, James P. & Morgridge, Tashia. (2007) Professor of Reading. University of Wisconsin-Madison. Madison, WI 53706 http://www.academiccolab.org/resources/documents/Good_Learning.pdf



Wednesday, March 18, 2009

Georgia Tech's Rescue in Computer Science

I found this article as I was perusing the gaming techniques in programming. It was very insightful and is exactly where we are:

Georgia Tech is gaining national recognition as a university that is coming to the rescue of computer science.

According to the Chronicle of Higher Education, as enrollment numbers in college computer science departments especially among women continue to dwindle, "professors are contemplating ever-more-elaborate strategies to keep the United States from slipping further in the international engineering sweepstakes." One particular strategy is to revamp and rebrand computer science programs to broaden its appeal.

More than a dozen universities have created "media computation" programs, which hope to introduce students to computer science through digital art and Web design, not traditional programming, according to the Associated Press.

Tucker Balch, an associate professor at Georgia Tech, told the AP that the course is an attempt to combat "prime number" syndrome. That disease, he said, afflicts computer science departments that typically ask newcomers to write dull programs performing mathematical algorithms.

Tech's approach, the Chronicle said, "may also save computer science in America."

My sentiments exactly. It will be interesting to follow this and see where it lands.

Reference:

http://gtalumni.org/buzzwords/jun07/article228.html

Tuesday, March 17, 2009

We Learn by Doing

For this blog entry, I found a text that discusses the topic of using games for teaching concepts. The general idea is as children we begin learning by doing. Hands-on assignments and laboratory work progress this learning style. We can read all the theory we like, but we actually learn by doing.

According to the author, people use games as a means of expression. Gaming is a phenomenon that touches nearly everyone. Games and game environments provide a space wherein one can solve problems, interact with others, and build social networks.

The charm of play and the popularity of digital games inevitably leads to the question: can gaming be used in teaching? Through games, students are often prepared to go to great lengths in order to achieve their goals. With this pedagogic strategy, students will continue to learn concepts by questioning and discovering in the seeking of new understandings.

So, the real question comes as how do we present information to students in a meaningful and exciting way? How can we bring textbooks to life?

According to the author of this text, experience has shown that students are drawn to game-like learning environments and find in them the necessary motivation to undertake the study of a given subject.

Teachers and schools can no longer view themselves simply as distributors of information. The focus of education is shifting towards the task of understanding a computerized digital world that contains great amounts of noisy information. The functions of games and learning environments are converging, and more often than not learning in this setting occurs in a less self-conscious manner, using modern digital instruments to explore and test the large quantities of information that is available to students.

Students are motivated by using gaming strategy and techniques to learn new material. The real question now is to what degree do we use gaming concepts?

Reference:

Hug, Theo, (2007). Didactics of Microlearning Concepts, Discourses and Examples, Waxmann Verlag Publishers, New York

Saturday, March 14, 2009

Developing a Gaming Curriculum

Now that we have a clue about the student who will be enrolling in our programming courses, I thought I’d move to the other end of the spectrum, that is, toward developing a gaming curriculum.

The middle part of this spectrum is really the basis of this blog, that is, how do we use gaming content to teach programming concepts, but it does help to know what the end result may be.

This blog entry will summarize a thesis on:

Power and Peril of Teaching Game Programming
By Maic Masuch and Lennart Nacke

The authors introduced two different approaches to game development for computer science students at two universities (University of Magdeburg, Germany, and University of Otago, New Zealand) in different countries and social contexts.

Based on the feedback from these university studies, a wide range of benefits include:

- Motivation - Games turned out to be a motivational source second to none.
- Versality and interdisciplinarity - game development inherently requires input from many disciplines: programming, design, sound, business, and many more.
- Self-contained projects - Knowing that they are working towards a product is intensely motivating for students as they can possibly include it in their portfolio and use it for future job applications.
- Practical experience - After finishing the project work at university this experience can also be used by entrepreneurial students to start their own spin-off company.
- Teamwork - students learn how to work in teams by a group-project based teaching curriculum.

As we all know, in addition to benefits come challenges and problems:

- Claim vs. capability - For most students a game is simply a larger software project; while trying to compete with popular game titles they underestimate the amount of work and the capabilities needed for completion by an order of several magnitudes.
- Interdisciplinary teamwork - it is important that every member identifies himself with the task assigned and the team.
- Missing focus and complexity of projects - focus should be set on specific aspects of a game.
- No experience and use of wrong tools – begin software evaluation at least one semester early, preferably with a well documented prototype.

Conclusion:

Computer games have an enormous potential in teaching and research.

Games are exceptionally well in
- motivating students,
- teach them interdisciplinary teamwork and
- give them hands-on experience in multimedia integration
.


Some practical hands-on advice for people who are planning similar courses:
- focus on either game programming or game design, not both.
- ensure equal levels of programming experience and capabilities.
- students should not start to learn tools while in production – use crash courses in advance of the lecture for preparation.
- do not allow different platforms, engines, languages or tools – students should help each other.
- have fun!!

Based on this thesis, it shows that students are motivated to learn programming and other skills by developing games. This is exactly where I'm headed with this idea with the current programming curriculum at my school. Using games to introduce programming concepts may be a motivating factor in getting students to enroll in these courses. More to come...

Reference:

Masuch, M. & Nacke, L (2004) Power and Peril of Teaching Game Programming http://thesis.pxfx.de/Masuch-Nacke-PowerPeril.pdf


Thursday, March 12, 2009

Gamers entering the workforce

To continue on my theme on the retiring boomers and the emergence of gamers, let's learn a bit about our incoming students - who they are and what they have been doing up to now. It’s becoming apparent that traditional means of knowledge won’t translate as before. New generations of technical-savvy experts are headed our way.

According to the article, waiting in the wings for the big boomer retirement are about 90 million gamers. This is the generation born in the early 1980s at the same time as the emergence of the video game Pac Man. It is no coincidence.

Before I continue with this thread, here’s a definition of a gamer:

“A gamer is anyone born between 1980 and 2001 who plays any type of computerized and/or video game for more than five hours a week and understands how to navigate the World Wide Web. It turns out that’s just about everyone under the age of thirty.”

Did you know that by the time a student graduates from college he or she will have played over 10,000 hours of computerized games? As a parent, I believe it. In fact, the older my children get, the longer they want to play video games.

Research provides the profile of an average gamer. He is 29 year old male with an annual household income of more than $50,000. However, he is not alone. Almost 43% of the average gamers are female and 26% of those females are over 18.

Putting it in Perspective

Let’s use this scenario: think of our faculty meetings. We are all educators, so I’m fairly certain this is a common premise between us.

We literally come to campus, sit together on one room and discuss important issues for an hour or two. Is this true for you?

Now take the incoming gamer generation – the literal meeting room may be an odd occurrence for them. Issues could simply be addressed using cell phone texting, Skype, or teleconferencing from home. This will all be “normal” to them. Why waste the energy driving to campus for a meeting when all can “meet” virtually?

The transfer of knowledge between the boomer and the gamer will probably be remote. The boomer – the mentor – will simply text instructions to the gamer on how to complete a process. Although, I wonder if certain industries will be able to work this way. I just can’t imagine a boomer-surgeon texting a gamer-intern on how to perform open heart surgery, can you? I certainly hope not. It will be amazing to see what does transpire.

Now that we may have a better idea of what our incoming students are like, how can we translate this information to teaching our incoming-gaming students how to learn concepts in the programming field without using cheat-codes?

References:

http://ecet.ecs.ru.acad.bg/cst06/Docs/cp/sIV/IV.13.pdf
http://www.e-learningguru.com/wpapers/vendor/Kapp_GGG.pdf

Wednesday, March 11, 2009

As baby-boomers retire, the gamers are entering the workforce

I found this site from the Institute for Interactive Technologies and as I read the post, I realized that my focus on this blog has an amazing impact on how programming should be taught.

I've copied the first few paragraphs from the abstract. It's a wealth of information and I'll probably be visiting this again:

"It is almost impossible to underestimate the knowledge gap that will be caused by the retirement of the baby boomer generation. Scientists, CEOs, nuclear technicians, doctors, lawyers, sales managers, senior trainers and other highly skilled individuals are not walking out the door… they are running. "

"In the next five years, approximately 40 percent of the skilled labor force will be eligible to retire. In the next 10 years the entire boomer generation will be over 50."

"Simultaneously, a new generation of employees…dubbed “gamers” are entering the workforce with a different focus, mentality and learning style than any previous generation. A mentality forged by playing video games, using handheld gadgets and surfing the Internet. "

"There needs to be an unprecedented transfer of knowledge, information and data from one generation to another and traditional knowledge transfer methods will not work. The traditional methods are outdated, take too long and are not keyed into the gamer ethos. "

"An ethos centered on games, gizmos and gadgets as well as a technology comfort level possessed by no other generation. This is the first generation to grow up entirely in the video-game age. They are truly digital natives."

Wow - it's coming quickly. Does this speak volumes to you as well? I think this transcends all levels of study - especially technology.

http://www.e-learningguru.com/wpapers/vendor/Kapp_GGG.pdf

Monday, March 9, 2009

Creating computer games to introduce programming

Do you like to play computer games? If you don't, I bet you know someone who does. Gaming is a big industry and it's a growing field. Have you ever played or watched a computer game and wondered how it was written? What skills are necessary in order to write a simple PacMan, Tetris, or Halo game?

Many students who are now entering college have literally grown up with technology. These students are not afraid to program a cell phone, set up TiVo, or even to install a driver onto their computer systems. However, not all feel comfortable with programming a small application. In fact, many students find programming, in the traditional sense, a bit dry. If it's not flashing and running from bad guys, it isn't all that interesting.

I currently teach COP1000 - Introduction to Programming at Santa Fe College in Gainesville, FL. Our programming classes have been taking a hit with the downturn of the economy as well as the news indicating that all the computer jobs are being sent overseas. Think about it - you may have called tech support for help on your computer and chances are you've spoken to someone in India.

I get calls from employers who are eagerly wanting to hire students who can program. The need is here. The problem is now just trying to get our students to become interested in programming. To do this, I'd like to use this blog to promote gaming as the course content for students to learn the programming structures. If chasing a bad guy means you need to program a loop - then by all means go for it!

Some of the topics I'd like to include in this blog will introduce logic, variables, decision-making, loops and arrays, just to name a few. Games will be used to introduce these terms and how they work. Hangman, Poker, Guess-a-number, finding the states and their respective capitals are just a few of the types of games that may be introduced.

These may not make sense now, but as this blog progresses it will be interesting to see how the course curriculum may benefit from this experiment.

Thanks for your interest and please let me know if you'd like to see any other topic included.