Sunday, April 19, 2009

How Do You Teach Functions?

How do you teach individual components like functions to beginning programming students? Can you guess? Play a game, of course!

I’ve determined in my previous research that giving my introductory programming students a choice to program either a game or a real-life use project is the best way to go. This should counteract any gender bias.

However, I have noticed that when I introduce certain topics – such as functions or methods (some call them subroutines), students have a difficult time regardless of the project they have chosen.

What are functions? Functions require using logic that will cause the program to branch off to execute another set of blocked code. Most students begin to learn to program by placing all their code into the main function. At first, that’s acceptable, but as the program becomes more intricate, you need to be able to block your code to make it easily readable and fixable. It is agreeable that you think of the main function as a to-do list and let the functions do the work.

For example, you’ve been given the task to program a hangman game. You understand the rules of the game and you understand what you must to do to code the project, but your instructor has required you to use functions. Simply put, it’s just a different way to program! The outcome, whether or not the programmer uses functions, will be the same to the player of the game, but not to the programmer.

The question remains: How do you teach functions?

My director of our department sent this game to me last semester thinking it would be useful in my introduction to programming course to initiate the concept of functions and reusable code. I opened the link with a delighted surprise – it’s actually very fun to work with. Initially, I was concerned since most pre-programmed games I have come across have some juvenile aspect to it, but this game is just a bit different.

The name of the game is light-Bot developed by Coolio-Niato, sponsored by Armor Games on Kongregate. You program the robot to go through different obstacle courses. Eventually you run out of room with the commands, which forces you to begin using repeating code in functions. My students usually have a difficult time with functions in some manner and this game actually became fun for them.

I have to tell you as I was working through this again, my 12-year-old son couldn’t wait to give it a try. He actually did great!

You literally drag commands to the blocks in the order you want the robot to perform.

The site gives this description:

“light-Bot is a programming-style game version of Lego Mindstorms game. Give commands to your robot to light up the factory. Very soon you will realize though that using the main method on it's own is not enough and you will have to start creating re-usable functions to achieve the ultimate goal.”

Give it a quick try (it really only takes a moment!):

http://www.kongregate.com/games/Coolio_Niato/light-bot?email=invitation&referrer=

After level 6 (see image), you run out of spaces to drag commands and you are forced to watch for repeating code to put into your f1 and f2 slots. Then in the main function, you call the functions you have programmed.

Before I introduced this to my class, I wanted to do some research to see if other studies have indicated any successes using games such as light-Bot. Guess what I found:

Developing Understanding of Programming Principles using Flash Actionscript

Graham Routledge, Amin Aminaei, Phillip Benachour
Department of Communication Systems
Infolab21, Lancaster University, UK

http://www.ics.heacademy.ac.uk/italics/vol6iss4/Routledgeetal.pdf

The authors’ noted, “It is important as a result to find ways of engaging students in activities where programming is seen as a tool to demonstrate other concepts and ideas visually which can in turn help in the teaching of programming principles.”

The concepts and methods used when writing programming code can seem very abstract and difficult to understand. How can you program something you don’t understand?

The authors concluded that for many students entering higher education to study information and media technology with no or little programming experience, it is not always obvious what a ‘function’ is or how an ‘if’, or ‘else if’ statement or an ‘array’ works and where it should be used.

Also, In general, basic programming should not be too difficult for beginners, but concepts can be difficult to visualize for some students, while for others the written example code alone is enough to build a mental image of what is happening within the program and this often leads to varying learning rates for different students.

In conclusion, the authors’ stated, “When evaluating student feedback, the results show that a majority of students –with and without previous programming experience- will engage well with an application environment where visualisation is involved. A high majority of students with previous programming experience (82%) said that they felt that learning to program without visualisation was hard and slowed their progress.”

My Thoughts

I didn’t introduce light-Bot to my class right away. I really wanted them to learn syntax – that is C++ code – before getting “lazy” by dragging commands. We had been burned by using Alice before, so I was hesitant to use this immediately.

However, when time came around for repeating code and the introduction of functions, I introduced them to this game. Again, it doesn’t take very long before you are forced to use functions – which helps the students understand the concept of repeating code and how smaller functions can be reused over and over.

The good part of this is that the students “get” exactly what is happening when a call to a function is added to their program. That’s half the battle! In fact, when it came time to write their program, they understood exactly what types of functions to use and where to put them.

The not-so-good part of this is that while the students began to see the usefulness of functions, they had a tough time getting functions to behave using the C++ syntax. Pass by reference or pass by value? Does the order of the arguments matter? Regardless, that’s another issue for another post.

In light-Bots, you also don’t pass parameters or use arguments in these functions, but the whole idea is just getting the students to recognize the value of reusable code.

Once you’ve done that – you’re on your way!

Tell me what you think of light-Bots. I’d love to hear your thoughts and results.

References:

Kongregate, “Play light-Bot”, Web Site:
http://www.kongregate.com/games/Coolio_Niato/light-bot?email=invitation&referrer=


Routledge, G., Aminaei, A., Benachour, P. (October 2007). “Developing Understanding of Programming Principles using Flash Actionscript”, Retrieved: April 19, 2009. Web Site:
http://www.ics.heacademy.ac.uk/italics/vol6iss4/Routledgeetal.pdf




Friday, April 17, 2009

Problem Solving in Community: A Necessary Shift in CS Pedagogy

Several times in my research I've noticed conclusions that stated that women do not like to program games. This intrigued me so I thought I would research just a bit on some women studies regarding gaming in CS1.

Problem Solving in Community: A Necessary Shift in CS Pedagogy

Sarah Monisha Pulimood
Department of Computer Science
The College of New Jersey

Ursula Wolz
Computer Science and Interactive Multimedia
The College of New Jersey

http://delivery.acm.org/10.1145/1360000/1352209/p210-pulimood.pdf?key1=1352209&key2=1767099321&coll=GUIDE&dl=GUIDE&CFID=31476945&CFTOKEN=33370313

The authors’ noted, “Supporting a workforce that can create, not simply consume, computing technology requires a shift in pedagogy toward problem solving in a gender neutral, culturally and ethnically diverse community. It requires an authentic learning environment in which students solve real problems as a collaborative community with their peers from other disciplines.”

One study mentioned in this article noted that, in general, women were drawn more to a curriculum that utilizes real-world uses – not just the dry, mathematical problems or male-oriented applications like sports statistics and missile trajectories.

In one of my previous posts, I noted that when students are asked to choose between two assignments, one that is typically considered to be ‘traditional, male-oriented’ and one that is set in a more real-world context, that women almost always selected the “real-world” assignment. There appears to be no selection bias among males.

The authors’ noted that in earlier semesters when students typically proposed and implemented games-based projects, their feedback at the end of the semester included positive commentary on the communication and teamwork skills they had gained (in addition to the usual technical skills) but not much on their satisfaction levels.

Only after they were discouraged from games-based projects and were encouraged to implement other types of interesting projects, there was a marked increase in feedback on the satisfaction with the project work experience, all of it positive.

The authors’ stated, “It is clear from this experience that students, regardless of race or gender, respond favorably to assignments that are real-world and need-based.”

Another factor that comes into satisfaction is the amount of time spent outside of class that is needed to complete an assignment. Students were asked at the onset of class to estimate the time needed outside of class they would spend on the course. The average estimate was 3 hours.

At the end of the course, students were asked how much time they actually committed to the class. The average estimate was just over 7 hours.

Furthermore 87% of the students overall rate the experience as valuable.

On an interesting side note, the authors detailed a small study that combined students from different disciplines, such as computer science and education together to create educational games. Each registered for separate courses within their discipline. Faculty from these disciplines would give reciprocal guest lectures and assign collaborative projects with the expectation that the students would meet between classes.

According to the authors, the primary outcome was the discovery that students found countless ways to avoid collaboration outside class! In addition, the most common complaint from the students was that students from the other classes did not attend meetings, and they themselves “did all the work”.

Priceless!

My Thoughts

According to my previous research, I was concerned that if I introduced gaming into my CS1 class, that the women in the class may not find gaming interesting. That would conflict with the purpose of my redesign and research.

Generally speaking, if women enjoy programming real-life uses and men enjoy programming games, this confirms my previous research that offering two different projects per concept is the way to go. One of the projects would be a real-life use and the other could be a game.

In addition, perhaps the student’s expectation of time spent outside of class to work on a project is a bit off. It appears they will ultimately spend double the amount of time than they had initially expected. In essence, if you’re going to spend a lot of time outside of class to work on projects, they might as well be projects you like to code.

I couldn’t help but chuckle when I read the short study on collaboration between disciplines to complete a project. That’s such a common complaint, even if they are students within the same section! Someone ends up doing all the work. Indeed. I do believe this because as an undergraduate computer science student, any group project assigned ended up with me (and maybe one other) completing the entire application and everyone getting credit for it. I certainly don’t miss those days!

What do you think?


Reference:

Pulimood, S. &Wolz, U. (2008). “Problem Solving in Community: A Necessary Shift in CS Pedagogy”. Proceedings of the 39th SIGCSE technical symposium on Computer science education. Web Site:
http://delivery.acm.org/10.1145/1360000/1352209/p210-pulimood.pdf?key1=1352209&key2=1767099321&coll=GUIDE&dl=GUIDE&CFID=31476945&CFTOKEN=33370313

Wednesday, April 15, 2009

Using Games in Introductory Courses: Tips From the Trenches

I feel confident from my previous research that introducing games to learn programming concepts can be beneficial if done correctly. What exactly is considered “done correctly”? That’s my new focus and based on this, I found this research that gives some interesting tips on using games.

Using Games in Introductory Courses: Tips From the Trenches
Jessica D. Bayliss
Rochester Institute of Technology
http://delivery.acm.org/10.1145/1510000/1508989/p337-bayliss.pdf?key1=1508989&key2=8187859321&coll=GUIDE&dl=GUIDE&CFID=30881536&CFTOKEN=16402446

The author noted that one of the areas with a record of success is with using games in introductory programming courses. While there are several successful programs, the drawbacks of these approaches are not commonly discussed along with their benefits. The author stated, “Having run a successful game-based program that retained students within the CS major at a 93% rate, we discuss both the benefits of the program as well as the problems that need to be considered and overcome.”

TIPS FOR SUCCESS

Based on the author’s experiences with using games in the introductory course sequence, the following tips would be considered helpful for others to follow.

In essence, instructors who wish to use games in introductory courses should:

- learn about modern games through playing them and before using them in a course. A professor or lecturer teaching games should play them and know about them.
- consider course outcomes and add game assignments to meet them. Games are flashy and it is easy to become lost in trying to program the prettiest graphical user interface when the real goal is study movement algorithms. All game assignments should directly relate to course outcomes.
- scaffold by either having students program small parts of an existing game or through using a game framework.
- allow creativity in assignments.
- encourage risk taking from students, but know when to pull them back.
- use games in a variety of ways.
- consider gender when planning assignments.
- consider having a special CS1-CS3 section concentrating on development through the use of games if there are enough enrolled students. If not, then use games in a portion of CS1-CS3 courses.
- leave enough time for learning a framework or planning assignments with games.
- rigorously assess the introduction of games into a course in order to make sure that the appropriate course outcomes are being met.

Games may be used in three different ways in an introductory course and not all uses of games need to be complex.

Students may learn through:
- programming a game
- playing a game
- the analysis of elements in a game

POTENTIAL PROBLEMS

The author noted that while using games in an introductory course may be very successful, there are potential pitfalls that need to be avoided.

Here are some of the potential problems that may occur when trying to introduce games as an application area into computer science courses:
- Game technology fails
- Not everybody likes games
- Games aren’t serious
- Not enough time

Bayliss stated, “There are several questions that we believe are of primary importance when deciding whether or not to use games in the classroom.

1. Is the teacher of the class willing to do the extra preparation for using games and does the teacher have the necessary time to prepare for using games?
2. Are games being used to learn a certain concept or are they being used primarily to engage students and get them interested in the field of computer science?
3. Is the school environment conducive towards using games in order to teach concepts?”

If the teacher of the course has minimal preparation time, then the author stated that it is better to hold off on using games or to use simple games that are well known. Students invariably find out when a teacher does not understand a game concept.

Some school environments are more conducive to using games in order to teach concepts and some are less so. It is important to assess learning very carefully when comparing game and nongame assignments. It is possible that a poorly planned game assignment will actually perform worse than a non-game assignment.

My Thoughts

Indeed, I have experienced some of these benefits as well as problems first hand when I’ve attempted to add a few games to the assignments for my introductory programming course.

An example: We use C++ now, but before this, we used Visual Basic to introduce programming. My, oh my, our students could create the most magnificent forms! They were beautiful and had so many intricate details, but can you guess? These beautiful forms did nothing. The students spent so much time on the form; they did not actually complete the programming portion of the project. If they did begin the programming, often times it was incomplete. What a disappointment. Only when they took the second level programming course (console-based C++) did they actually learn how to program.

As I continue to work through the redesign of the curriculum of the introduction to programming course, I’ll certainly heed the advice of the author.

If you’ve experienced any of these, please let me know what you thought worked well and what you needed to change in order to get the problems to be a minimum. Your experience would be fascinating to hear!

Reference:

Bayliss, J.D., (2006), “Using Games in Introductory Courses: Tips From the Trenches”, Technical Symposium on Computer Science Education Publication. Web Site: http://delivery.acm.org/10.1145/1510000/1508989/p337-bayliss.pdf?key1=1508989&key2=8187859321&coll=GUIDE&dl=GUIDE&CFID=30881536&CFTOKEN=16402446

Monday, April 13, 2009

My Thoughts on the Media Equation

The Media Equation

For this blog posting, I’m using Chapter 1 from the resource “The Media Equation” by Reeves and Nass given to us by our course professor.

I enjoyed reading this chapter and was able to identify with many points in this paper. Does Media = Real Life? According to many of the studies completed, this appears to be true.

An example of this would be using the statement, “Everyone expects media to obey a wide range of social and natural rules”. (pg. 5) If you’ve ever programmed a game, you’ll find that the programmer took into consideration the common rules of the game that most people would expect to find. If a game deviates off course too much, the general public tends to become hostile to the game – “It cheats!” or “It doesn’t play properly!” and will promptly discard the game. That’s certainly not the ultimate goal of a game developer.

In addition, on page 5, the statement, “People are polite to those who ask questions about themselves” as well as “People are polite to computers, too”, certainly rings true as well. If a game asks for information about the player before hand, generally speaking, these people will fill out whatever information is necessary. That’s not to say that the all questions are received warmly, but that by and large, most folks will give an email address or answer other relevant questions.

While on this same thread, I think that’s why the Windows environment became so popular. It “thinks” as we humans think. The old DOS screens and commands were so convoluted that most people just couldn’t memorize or complete simple tasks. The Windows environment is more visual and gives people a normal view of what is happening in the system.

Did you ever wonder why some games are such a big hit and others simply vanish without a trace? I believe the media equation helps define why there is such a big discrepancy between games. On page 8, the statement, “Because people have a strong positive bias toward social relationships and predictable environments, the more a media technology is consistent with social and physical rules, the more enjoyable the technology will be to use.”

The closer a game comes to a player’s reality – and I don’t mean in our everyday lives, but that the social rules and norms are something the player can identify with – the better results the game will have overall. Those that are too vague or too complex are too much for the player to process and they will simply move on another game that is more like the way the player thinks.

I have to admit that page 10 really hit home with me, specifically the Big Issues category. This page tells us, “research shows that media are perceived as real people and places. “ Who of us has never “talked back” to the television or expressed our impatience when the computer responds a tad too slowly?

Another common assumption about technology is that when people treat media as human, they are guilty of anthropomorphism, a mistaken belief that inanimate objects are human.”

How about when our games don’t respond exactly as we would have them behave? Lastly, if a game ran too slowly or the rules weren’t clearly defined, would you want to play it? Not according to this article on page 11, “There is also a strong tendency in discussions about media to consider the real similarities between media machines that think and the thinking done by humans.”

In addition to all of this, I could relate best to page 11, “Anything that seemed to be a real person or place was real.” The article gave an example of a scary movie. I don’t like scary movies because I tend to perceive them as real and I have to spend a great deal of time processing the details of the movie, “it’s only a movie, it’s only a movie” is my mantra! The paper goes on to state, “The fact that the movie scared us in the first place is good evidence that media are real first, and false only after we think about it.” That’s a very true statement in my world!

Although this last example is a bit off my topic of games in education, I have to share one item of interest that correlates well with this paper. As an undergraduate student, I chose to take a psychology course as an elective. It was very interesting and one of the precepts of the course was that each student had to complete a few experiments in which the student was the “lab rat”. So, I sign up for my first experiment, not really sure what I was going in for, but knew I had to.

There were several of us, including my roommate. We were all led to separate rooms and was told to fill out this questionnaire. Not too bad! Many of the questions were judgment questions, such as, if you were a mediator between two people and one person had reason A and the other had reason B. What would you do? There were several options and you had to choose one.

The person who was administering this experiment (and I assume it was a PhD candidate writing his/her dissertation looking for data) would take our answers and return shortly with a “grading” of our judgment. In my case, I was told that I had excellent judgment and asked me another judgment type situation. At the end of this, I received a notice that I had excellent judgment and would I change my major to some sort of a judicial-type career? Boy, I was feeling great!

Afterward, my roommate and I shared our “judgments”. She answered the judgments exactly as I did, but was told repeatedly that she had poor judgment and that she should not consider a judicial-type career. She was devastated until I told her my results – we had been played so well! How funny that we would respond the way we did based on a simple psychology experiment! As stated on page 14, "People like to be praised by other people, even if the praise is undeserved."

Did I mention we were freshman? Perhaps that tells the whole story there.

References:

Reeves, Byron, and Clifford Nass. 1996. "Ch 1, The Media Equation," pp. 3-18 in The Media Equation. Cambridge University Press.


Wednesday, April 8, 2009

What Makes a Good Gaming Assignment?

As I continue my research with Microsoft XNA gaming, I came across this publication and it struck my interest.

My research so far indicates that gaming is a good way to introduce programming concepts to beginning students, but the next question is:

WHAT MAKES A “GOOD” GAME PROGRAMMING ASSIGNMENT?

Daniel C. Cliburn
Department of Computer Science
The University of the Pacific

Susan M. Miller
Educational Foundations and Special Services
Kent State University

http://www1.pacific.edu/~dcliburn/ccsc-cp08.pdf

Based on my findings in my last posing, research has shown that when students are given a choice they prefer game to non-game assignments.


What key elements are necessary to create a “good” game assignment?


These assignments would be appealing and motivating to all students, in addition to helping them learn the material a project is intended to teach.

The authors believe it is important to understand specific characteristics of game assignments that students do select to determine why students choose these projects.

The first research question was whether students prefer structured or unstructured game assignments.

In this study, students had the option to create projects that were unstructured using Alice. The other option was to create projects in a structured environment using Java. Unstructured assignments were those that allowed students a great deal of latitude in writing a game or adventure story of their own choice. Structured assignments explicitly directed the students what to write (create the game tic-tac-toe or code the solution to a specific problem from the text book).

A student noted, “With the non-structure we did not know where to start.” This student went on to say that structure makes the project easier and makes students more motivated to get the project completed because they know exactly what to do.

The student who chose the unstructured assignments stated that he liked open-ended projects. He stated that this type of assignment provided the most opportunity to try to learn new things. This student was one of the most motivated in the course, producing excellent assignments and scoring high on exams.

Responses suggest that students were unable to judge whether they could complete an unstructured assignment given their current level of knowledge.

The question remains: Why did some students choose non-game assignments over games?

The research revealed that students did not avoid game assignments because of a dislike for designing or programming games. Instead, students chose non-game assignments because of their need for structure, a perception that it would take less time, and limitations in creating the game option.

Authors' Conclusions

Open-ended assignments may be best suited for an upper division game programming course.

The authors suggested the following recommendations to guide the creation of future game assignments for CS1:

1) Provide as much structure as possible.
2) Well-known games should be assigned when possible.
3) When possible, give the games a graphical element.


My Thoughts

I agree with the conclusions that the authors suggested. When I do assign games, I try to use games that most everyone is familiar with: guessing game, hangman, etc. I found students tend to enjoy programming these types of games much more than games the student has never played.

I once assigned a poker game to my C++ class. Those who understood all the variations of a hand (full house, royal flush, etc.) were much more involved with the game than those who didn’t understand all the different permutations.

The same data held true for my class that was assigned to design a Craps game. Those who understood the combinations of the dice really programmed fascinating projects. Those who did not still programmed nice games, but without all the “extras”. I assuming these students needed to take time to learn the game before they could begin to program it!

As I begin to redesign my introduction to programming class, the three suggestions from these authors will be paramount to the games I assign.

If you’ve ever assigned a game to a class, let me know your results. Did the students get into the game or did the game concepts kill the fun?

References:

Cliburn, D., Miller, S. (2008), "What Makes a Good Gaming Assignment?", ASEE/IEEE Frontiers in Education Conference. Web Site: http://www1.pacific.edu/~dcliburn/ccsc-cp08.pdf





Tuesday, April 7, 2009

Which Assignment Would You Choose?

As I was researching for my blog entries this week, I came across several articles that discuss students’ perspectives on gaming assignments when given the choice between two assignments. One of the assignments had a gaming theme to it and the other assignment did not. Very interesting results.

The study:

The Effectiveness of Games as Assignments in an Introductory Programming Course
Daniel C. Cliburn
Hanover College

http://www1.pacific.edu/~dcliburn/fie1171.pdf

In essence, this paper presents the results of a study that attempts to quantify the effectiveness of computer games as programming projects over non-games.

Students completed five major programming assignments during the semester in an introductory programming course. For each assignment, students were given an option between two programming projects, a game and a non-game.

In this study, the assignments offered were:

Project 1A: Number Guessing Game
Project 1B: Change Making Program.

Project 2A: The Marble Game
Project 2B: Factors of Numbers

Project 3A: The Casino Game
Project 3B: The Movie Theatre

Project 4A: Tic-Tac-Toe
Project 4B: Blob Finder

Project 5A: Hang Man
Project 5B: A Bookcase

Throughout the term, 78.9% of the assignments submitted by students were the game option. The average grade, however, on game assignments was 89.1%, while the non-game average was 95.1%.

Most notably, games tend to be more appealing to the male students, and competitive games may even “turn off” some females.

However, both genders did attempt more game assignments than non-games, supporting a conclusion that both genders prefer game assignments to non-games. As the assignments became longer and more complex, the games became even more popular.

The author stated, “the best students in the course were the ones choosing the non-game assignments.” In an informal conversation with a student early in the term, the author asked the student what criteria he was using for selecting projects. The student replied that he looked at both assignments and chose the one that he thought looked more difficult. That way, if he could figure out how to do the more difficult project, he was probably learning more in the course.

In a survey at the end of the course, the students were asked several questions. The most notable ones were:

Which project was your favorite? The casino project (Project 3A) was the top selection.

Did you enjoy working on game assignments? 22 out of 25 students (88%) responded “yes”.

Did the games provide any extra motivation for you to complete the project with a high level of quality? 21 out of 25 students (84%) answered “yes”.

The Study Conclusion

The study described by this paper attempted to answer the following questions:

Did students prefer game assignments to non-games? Students chose substantially more game assignments than non-games over the course of the term (78.9% to 21.1%)

Did games assignments improve student scores? No, they did not. Non-game assignments had a higher overall average (95.1%) than non-games (89.1%).

Was the motivation of students to learn programming skills increased when they had game assignments compared to non-games? 84% of the students surveyed answered “yes” when asked if the games provided any extra motivation to complete the projects with a high level of quality.

Probably the greatest lesson learned by the author while conducting this study was that all of the students enjoyed having a choice on the programming projects.

My Thoughts:

Although some of my previous research indicated that using some games to teach programming concepts was a positive move, this study gave me a prospect to consider.

The idea of giving a gaming AND a non-gaming assignment is intriguing. I had not thought of that before. I have given students choices between assignments, but typically they did not differ significantly in concepts.

I may actually try this for the last project in my introduction class this semester. If I can get all my ducks in a row, I’ll be sure to give you feedback from this project.

Clearly, providing students with a choice between a game and a non-game seems to offer the best of both worlds. The students who enjoy games and find them motivating are provided with this option. Any students who do not want to work on games do not have to.

References:

Cliburn, D., (2006). “The Effectiveness of Games as Assignments in an Introductory Programming Course”, ASEE/IEEE Frontiers in Education Conference.
http://www1.pacific.edu/~dcliburn/fie1171.pdf


Friday, April 3, 2009

Game Themed Programming Assignments: The Faculty Perspective

As I continue my research for more Microsoft XNA studies, I found this interesting article that gives gaming feedback from the perspective of the faculty. At first, I thought it was a deviation from my research, but as I continued to read this article, I found that many of the points hit home with my desire to hook students into programming. This article gave me several gears to think about as I search for gaming components into the curriculum. This article does utilize Microsoft XNA as the platform used.

Before I continue, I’d like to share why this article touched home with me. When I was an undergraduate student, I learned to program on very large mainframe computers. Imagine card punches and hoppers. Of course, as time progressed and I entered industry, computing migrated away from mainframes and began distributive computing. PCs became the norm, of course linked to a server to program my projects. I’ve developed many things, modem software, artificial intelligence, robotics, payroll systems, etc. Nowhere in my assigned projects did I ever develop gaming software. Note that I’ve always enjoyed playing games, but I haven’t been on the forefront to develop gaming software.

Now, onto the study:

Game Themed Programming Assignments: The Faculty Perspective

Kelvin Sung
University of Washington, Bothell


Michael Panitz
Cascadia Community College

Scott Wallace
Washington State University, Vancouver

Ruth Anderson
University of Washington, Seattle

John Nordlinger
Microsoft Research

http://faculty.washington.edu/ksung/pub/2008.sigcse53-sung.pdf

The authors begin with promoting their previous research in teaching computer games. They became inspired by the positive feedback they received from students and industry so they began to observe faculty that had little or no gaming/graphics experience.

In today’s society, students demand multimedia experiences, i.e., real time interaction in a visual environment. The authors noted, “Because existing results demonstrating that students' needs can be met and that the learning outcomes can be achieved, our work focuses on the needs of the faculty.”

The authors have two objectives in this study:

· First, develop materials that are suitable for adoption. In essence, the faculty could pick and choose within these materials to combine them with their current curriculum.
· Second, adopt the materials in existing courses and study the following: faculty effort; student learning outcome; and student engagement.

I am more focused on what effort was required of the faculty that used these items as well as student learning outcomes and engagement. I’m willing to put the effort into this gaming curriculum, but does it pay off in student learning outcomes and engagement?

Design Considerations:

The following are the categories the authors used when designing this game material. It’s relevant due to the fact that the faculty were required to implement these changes:

Institutional Oversight: Department committee consensus is often required for significant changes to the core courses. It can be challenging to arrive at a consensus, so each project was self-contained that did not require a complete rewrite of the entire curriculum.

Material Neutrality: It is important that the materials built are gender and expertise neutral. For example, it is important to avoid violence (shooting), and unnecessary competitions.

Academic Integrity: The authors stated, “The goal of this work is to facilitate students' learning about core CS concepts. Any dilution, in favor of even acquiescing to their motivation as game developers, would do the students a disservice.”

The Platform

The study indicated that platform selected to utilize these gaming components would be the C# programming language and the Microsoft XNA framework. This was selected by the fact that C#, XNA, and Microsoft's Games Studio Express combination is the only publicly and freely available solution that provides seamless integration of the development environment, programming language, GUI API, and graphics API. Students like FREE.

Due to the fact that this study was conducted for the faculty that had little or no previous experience with gaming development, each assignment had a console-based and a gamed-theme solution. This way, faculty who may feel comfortable with console-based games could make a slow transition to the same game based on a gamed-theme version. The problem came just making sure that the two solutions were equivalent.

The authors included an implementation tutorial that took the faculty step-by-step into the gamed-theme version. Many of the faculty in this study understood the concepts used in the console-based game, but were unable to make the leap to the game-themed version without assistance.

Assessment

Feedback from the faculty on using these assignments was posted via a custom evaluation form.

The focus of the evaluations was assessed on two areas:

a) Quality of the assignment, which focuses on the technical equivalence between the console and game-themed assignments, and the supporting materials (e.g., pre/post test, etc.).


b) Potential for adoption, which focuses on the factors that may prevent adoption of high quality assignments.

Based on the review feedback, the assignments were well received overall. For those assignments that received lower scores, the assignment were revised and reassessed.

The authors stated, “As expected, all of the low scores were caused by game-themed assignments.” The reasons for this are:

· Differences in difficulties: initial game-themed assignments are often too difficult, complex, or intimidating.

· Inappropriate use of concept: designing assignments around negative results from game play is a bad.

· Deficiency in support: the development team often overlooked important details. For example, in the beginning, a specialized hardware controller was the only way to control a game. This problem was remedied with keyboard simulation.

When the authors received consistently lower scores in the potential for adoption area, they became aware that the language issue must be addressed for wide adoption.

Since both versions of any given assignment covered identical technical topics, the hope was that faculty would adopt the game-themed version transparently. The authors were interested in verifying that the game-themed assignments would not require extra resources from the faculty, that they would achieve similar student learning outcomes, and that they would increase student interest and engagement.

In Conclusion

The study was very relevant to my research because the authors clearly stated, “We must verify that we can replace individual console-based assignment with the corresponding game-themed assignment without negative impact.”

In addition, this study was focused on, “one of the major motivations of our work is to further engage students via interesting and/or relevant assignments.”

This study is still going on as we “speak”. The early results indicate that the students enjoyed the assignments that used gaming specifications; however, not ALL assignments were games. In fact, most courses in this study only utilized 2 to 3 games per semester.

The faculty involved in this study (and I would have loved to participated!) were receptive to these new game-themed assignments, but the learning curve was difficult since most faculty have many other irons in the fire to deal with, much less to learn a new gaming system.

My thought is that I wouldn’t transform the entire introductory course to game-based programming, but introduce a few games here and there each semester.

Several faculty here at SFC have indicated that if we only teach gaming, won’t gaming become boring as well? That thought does hold some validity and upholds my thought of only using a few games per semester.

I will continue my research with Microsoft XNA and report any findings. In the meantime, if you do teach programming using a game-themed curriculum, please share your thoughts and findings with me. I’d love to see where you are and where you’re headed.

--Debbie

References:

Sung, K., Panitz, M., Wallace, S., Anderson, R. Nordlinger, J., (2008). "Game Themed Programming Assignments: The Faculty Perspective", from http://faculty.washington.edu/ksung/pub/2008.sigcse53-sung.pdf

Wednesday, April 1, 2009

The Game-Themed Introductory Programming Project

As I was downloading the Microsoft XNA framework today, I began to research studies that have been conducted with CS1 courses using Microsoft XNA. I was curious to do some background work on XNA and its uses and how it may fit into our programming curriculum – especially an introductory programming concept course.

I noticed numerous papers written by Kelvin Sung, PhD from the University of Washington at Bothell. This paper caught my interest right away:

The Game-Themed Introductory Programming Project

http://depts.washington.edu/cmmr/Research/XNA_Games/index.php

The entire proposal can be found at:

http://depts.washington.edu/cmmr/Research/XNA_Games/OriginalProposal/ProjectDescription.pdf


The Purpose:

According to the author, the project was conceived as part of the efforts in addressing the recent decline in enrollments across Computer Science (CS) departments. It has been demonstrated that teaching CS concepts based on programming interactive graphical games motivates and engages students while accomplishing desired student learning outcomes. When properly integrated into introductory programming (CS1/2) courses, these approaches can build excitement and enthusiasm for the CS discipline and attract a bright new generation of students early in their academic careers.

The project addresses these issues by designing CS1/2 game-themed courseware materials.


Goals

To develop Game-Themed materials targeted specifically for selective adoption by faculty members with no background in computer graphics or computer games.

To develop supporting materials for interested faculty members building their own Game-Themed materials.

To assess and demonstrate the effectiveness of the Game-Themed materials in classrooms.

The primary targets are introductory programming courses (CS1/2).

Projects

Currently, there are two projects in progress:

XGA: XNA Game-themed Assignments:

* Seven (7) XNA-based game-themed assignment modules that can be transparently replaced into existing CS1/2 courses.

* Neither the adopting faculty nor the students need to have any knowledge in computer graphics or gaming.

XGC1: XNA Game-themed CS1:

* Examples organized according to typical approaches of covering foundational programming concepts.


* All examples run on the Xbox360 gaming console.

* Assignments and students self-test questions.

* Tutorials for faculty to develop their own game-themed CS1 materials

This is a client of games approach where designing games-themed assignments will teach foundational programming concepts.

Expected Outcome

The author stated that the most significant outcome from this work would be excitement from empowerment: for both students and faculty. For students, the XNA based assignments empower them to apply the mundane programming construct and abstract programming concepts in implementing games that they can play on their favorite gaming console. For faculty members, the XNA based assignments provide a simple and clear pathway and thus empower them to integrate games into their courses.

Pedagogically, from the programming language perspective, C# and Java are similar languages. Currently, many CS1/2 courses are based on Java. With the success of XNA-based games-themed programming assignment modules, an increase is expected in interest from faculty members switching from Java to C# in teaching their CS1/2 courses.

This study will oversee student learning outcomes by administering pre/posttests, collecting student perceptions, grading the assignments, and gathering faculty self-assessment based on faculty reflections on in class activities.

This course proposal was delivered at the SIGCSE 2009 conference in Nashville, TN on March 4 – 7, 2009.

At that time, the author delivered the course outline, exercises and exams, labs, projects, video demonstrations, audiovisual content, slides, tutorials, source code, and reference materials. These can be found at:

http://www.facultyresourcecenter.com/curriculum/FacetMain.aspx?ShowResults=1&FT=Search&Inline=1&SearchType=1&SearchText=Sung&LanguageList=

There is a plethora of information waiting to be read and digested.

My thoughts:

This study is still in progress as I write this. It sounds very promising and I’m anxiously awaiting the results. I checked with the MSDN Academic Alliance Repository to see what results, if any, have come in. Coming soon, it says.

From this perspective, I will continue exploring Microsoft XNA Game Express Edition on my own and use some of the materials that this research has derived to see if our students will glean the necessary constructs needed to be able to move to a university or perform tasks immediately in industry.

When I read a bio on Dr. Sung I found this statement in regard to his programming courses that utilized these types of games:

“His students have used the knowledge they acquired in his classes to advance their careers at Microsoft, to succeed in CS programs at four year schools, and to succeed at programming positions taken directly after graduation.”

Hmm…didn’t I just say that? Did I find a match?


--Debbie

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