25259 >> Nikolai Tillmann: Welcome. It's my pleasure today to have Stan Kurkovsky from Central Connecticut State University, and I was fascinated by his long history of trying to teach mobile application development to beginning students. I'm very excited to hear more about this today. >> Stan Kurkovsky: Nikolai, thank you very much for introducing me. Well, whether it's a long history or not, you know, longevity is a very, very subjective issue. I have been doing this since probably 2008. Maybe 2009. talk some more about that a little later today. But I will So what I wanted to talk about is not just any kind of application development for mobiles, but specifically mobile game development. where it fits into the academic curriculum. And Well, to begin with, I think it's quite obvious. It doesn't matter how serious a person is, how many academic or other achievements a person has, we grow up with games, whether they're mobile games, toys, whatever it is. That's where we start. Just like 5-year-old will take a toy car, you know, when he goes shopping with his mom, a 10-year-old will take maybe an iPod packed with games and 15-year-old and onwards will take a mobile phone, because not only can they play games they can do other things. An interesting trend that's been going on for some time is that not only we're playing with toys, we are playing with gadgets that are far more than toys. And all these gadgets walkman, portable radios, they're converging. So today the thing that you carry in your pocket is no longer just a mobile phone. Let's say ten years ago it could have been a device designed for just one purpose. Today, that one little tiny box or whatever shape it is, it's suited for so many different things. It's your media portal. You can watch videos. You can keep in touch with friends. You can play games, you can do all sorts of things. Capturing video in a picture it's all in your pocket all the time. The question is, how is this all happening? Today -- well, these are quite obvious things. But we don't really notice all these obvious things because we kind of are surrounded with them. If you told anybody, let's say 15 years ago, that hey, you know, you will be able to browse the Web -- well, some people 15 years ago didn't even know what the Web was. But if you could browse the Web using this little tiny computer to carry in your pocket, that was very -- would have been quite difficult to imagine. These little tiny things, these mobile phones that we carry in our pockets today, well, they pretty much have the same power that the desktop computers had 15 years ago. Again, right now we are kind of taking it for granted. But if anybody told me that this is how things are going to be to myself 15 years ago, that would have been quite difficult for me to wrap my head around this. So not only technology evolves, the way how us, how people and young people, school kids, high school kids, how they interact with technology, it also changes. I like to ask my students a question, a very, very simple question. Okay. So if I ask you: What comes to your mind when you think about computers or technology in general, what would that be? And, again, when envisioning their answer, I'm trying to answer this question to myself 15 or 20 years ago, and I would think, well, probably a PC that I had when I was I don't know 17 or 18, and I was playing games, writing some basic programs. For me that was technology. That was computer. And a 17-year-old or an 18-year-old or 20-year-old in my classroom would say, well, PC, what's that. I don't know what PCs are. It's my mobile phone. That's what I use for basically everything. For a lot of kids these days, the first technology device that they get is a mobile phone or perhaps an iPod or something like that. And later on maybe they'll get a laptop or a PC. PCs are a lot of people would say they're on the way out. It's kind of -- the technology platforms there are moving away from that. The only reason why I'm talking about PCs is although the technology overall is evolving, the way how we're teaching technology or anything in general, it seems to be stalled and kind of frozen in literally the last century. And it's not only about teaching computer science. It's just teaching in general. Now, I have to make a very important disclaimer. I'm not trying to say, oh, because there is this new technological innovation we have to immediately switch the way how we're teaching using that new technology. What comes to mind, even though I'm not that old, but let's say when these are the stories I hear from my senior colleagues. They said when TV was first invented and was brought into everybody's homes, everybody was saying: Okay, distance education. Taking courses via TV or mail order VHS tapes, that's the future. How far did this get us? Probably not that far. But distance education, hybrid courses, as an idea, it's kind of taking off. So I'm not talking about education in general. I'm talking about education in computer science. Today, if you walk into a typical classroom, a lab, a studio, what do you see? You see desktops. And to a typical freshman, that's not what they envision as a high tech environment. It's not what they perceive as the embodiment of modern technology. Again, to them it's something small. Something that you have in your pocket with a simple GUI, but not that monster that they would see in a lab. I'm not exaggerating. It's not just smaller universities that they're stuck with PC labs, even bigger very well funded universities there, kind of mass access computer labs are still dominated with PCs. Not that this is a problem at all, but this mode of teaching, it has a certain number of implications. And, again, I'm talking only about computer science, only about -well, specifically about introductory computer courses. Well, traditionally, when you get into CS-1. So what are you taught? Structured programming, maybe Java, classes and such. And what kind of examples are you getting? Let's calculate average salary of some employee. Well, that's really exciting. Really. And these kinds of examples that students see in their classes, I mean, if they have their mind already made up that, yes, studying computer science and programming this is what I want to do and nothing is going to change my mind, fine. No problem. However, for a typical student these days, kind of thinking maybe I like this, maybe I don't like that, maybe I want to take this course. I kind of think I want to do computer science but I'm not sure. I'm going to try this CS-1 and see how it goes. Oftentimes the feeling that they get is that computer science is coding. Well, is computer science coding or not? Coding or programming some people would say is the same thing. Some people would argue that it isn't. Regardless. But programming is a necessary component some people would say it's a necessary evil. Doesn't matter how you perceive that. There's no computer science without programming. That's granted. But is computer science just about coding and programming? isn't. There's so many more other things going on there. Hell no it And it's really, really important to convey these ideas to students in introductory classes because we are literally at risk of losing that, and I'm not saying this because this is my subjective opinion. If you look at the enrollment trends after the big peak around late -I'm always confused how to call these years -- 1990s, right, 1990s to early 2000s, there was a big peak. And it kind of fell off a cliff. In the last three or fours years -- maybe two or three, I should say -the enrollment started climbing up very, very slowly. But there is an upward trend, but still they're not anywhere near where they used to be. And granted enrollments in programs such as computer science are cyclical. But nevertheless we have to fight for whatever students we've got. Whoever -- whichever student has indicated that they have some interest in computer science, we have to grab them while they're there and try to convince them that yes indeed if they have some interest, we have to kind of keep that going and try to make them as engaged in the material as we possibly can. So how do we motivate students? It's always a question. Some people say well let's play games. And I'm not talking about -- I'll be talking about game development but there is a bigger trend about using educational gains. In fact, so my semester started about a month ago. And as usual there was an introductory meeting with the provost. Chief academic officer. And he was all about games. He said, well, games is the latest trend. We have to embrace it. What kind of games again. We're not just talking computer science or technology or computers or whatever. Well, so we can teach through games. Well, in fact I have a colleague from a journalism program and she says: Well, she's using educational games that teach journalism. It was a little bit difficult for me to kind of process that. How do you play a game and teach journalism. But she explained it to me and it made perfect sense. It's like you talk about some made-up story and you're trying to dig up some sources for that and you work within a team and it's all about journalism. And, again, I'm probably making no sense here, but the way how she explained it to me it was actually quite interesting. If I were to study journalism that kind of would make sense. The question is, can we teach everything through a game? Can we teach I don't know English or biology? We probably can. The question is, would that be more appropriate for, I don't know, elementary or middle school or a university? That's where it gets me. I'm not sure that, you know, this game-playing kind of stuff is really appropriate to the university environment. I don't want to make a blank statement. I'm sure there are some instances where it's basically just what the doctor ordered, but is it the panacea, the solution for all the problems? I'm not quite sure. Still I'm talking about games. I'm not talking about playing games. I'm talking about developing them. So developing -- well game development, in the developing computer games as a motivating technique is nothing new. It's been practiced in computer science courses for quite some time now. And it's very, very important to visit two points that critics of well game development and computer science have raised. The first -- not an objective -- but a concern that they would normally voice is that, okay, so students are playing games or developing games to a software developer there is really a blurry line between the development of a game and playing a game. Both is essentially the same thing. So question is, how do we balance fund that students are having with the educational value? And it's a very, very valid concern. If all you're doing is playing games are you really learning anything from that? So we have to keep that in mind. The second objection or concern was that they're saying, well, look at the market of console games that are on the market today. They are very heavily male oriented. There's blood and gore -- yes, it's fun but it's fun for male audience. If we're trying to squeeze that into a computer classroom, we're going to alienate whatever females we're getting there, because they're not into that. Well, I know some female students are quite into that. But there are too many critics who would say that this is a problem. And this is another important concern. So how can game development really be integrated into computer science courses? First of all, as I mentioned I would like to reiterate, this is not a new concept. It's been done. There are entire programs aimed at teaching students game development, game design and production. There are individual courses. So it's been done. There's absolutely nothing new there. The thing to remember here is that developing of a playable game is a rather complex task. Well, anybody who have ever played any kind of engaging game, anybody who understands what it takes to develop a piece of software would be able to appreciate how much effort it would have taken to program this game and design the game play, design the graphics and sounds and everything else, and how much skills it would require -- the diversity of all the skills that would be required to actually create a product like that. Now, if you are in a program, in an entire curriculum, which incorporates many different courses aimed towards producing somebody capable of developing a computer game, yes, absolutely. But remember the focus of what I'm trying to look at is, okay, so we have this kid in CS 1, how do we motivate them? Can we give them a console game and say, here, let's develop that? No, it isn't going to work because they simply do not have the skills for that. It will be really exciting if they could do that. But they're not anywhere near the skill level and the diversity of different areas and computing and related areas that would be necessary to create a playable game. Now, there is one class of games that people typically call casual games that actually may solve the problem. Again, I'm not trying to say this is the solution to all the problems, but casual games, think about it. Games like this one, Angry Birds. Any kind of puzzle. Anything like that, what do they have in common? They're simple. Meaning simple implies a lot of different things. Typical that there's not that much animation going on and whatever animation there is it's typically very, very simple. The logic is fairly straightforward. The game play is, again, simple. There is no long scenario that they have to go through or if there is, it's kind of compartmentalized into levels and you can pause it at any time. As a consequence, you can play these games in short periods of time, or in long periods of time. It's really up to you, you can start and stop at any time. So you can play during a break between classes, while you're waiting for a bus at the bus stop or during a boring lecture, why not. It's certainly doable. A couple of other things quite good things going on for going for casual games. Statistics show, and again I'm not making this up, statistics show that these kinds of games, puzzles, whatever, they are what they call gender neutral. Meaning that both males and females enjoy and play these games equally. There will be no possibility to alienate or to attract disproportionate males or females. Everybody should be fine with these kinds of games. Because of all of these properties if I might say of these casual games, they actually might be quite suitable for using them in introductory classes. One other thing, it's these casual games that -- well, I don't want to say dominate -- but they -- if you think about the market share of different kinds of games that other people have on their mobile phones, these are the kinds of games people play predominantly on mobile phones. What else is good about mobile phones? Is that all students pretty much have them. Whether we like it or not, they do have them, and they will use them no matter what you do. If you tell the students that you have to turn it off during class, will they? No. They won't. They'll just keep on texting and all you're going to see is like -- and they will be looking at their crotch somewhere and smiling at it. Yeah, what's so funny going on down there. It's probably your phone, you're texting your friend and hopefully you're not doing it during your test because your friend may be sitting out in the hallway and giving you the answers. Anyway, question is this do anything about it, it it a fight? We might as these phones that you'll technology is already there, and if we don't will be used in a quite disruptive way. So is well just embrace it and say let's take all have and do something productive with them. Let's try to use them and develop games for them. So why -- what are the other reasons why we should be using mobile phones? In addition to well that they already have them. As already mentioned, to a typical college student a mobile phone is what they think is the technology today. If you tell them, okay, so we're going to create this program that [inaudible] command line on this desktop, boring. Now, you tell them all right so we're going to write some code and you'll have maybe a very simple but still a game that you can run on your phone. I mean, you're probably going to have to run an emulator on your computer, but as soon as you're done you can boot your phone and off you go. That's exciting. At least well may not be exciting to my senior colleagues, they probably hate me for saying this -- I know they do -- but to students, that's their life. That's what they perceive as the cutting and bleeding edge of technology these days. Instant gratification is a very, very important factor why students like that. With mobile phones, with mobile devices, when they put a piece of software on it, they can see it run right there and then. They can take this program with them and show it off to their friends who otherwise might dismiss them as a computer geek, but they're not computer geeks, they have mobile phones just like everybody else. And it simply raises their cool factor when they say oh I'm not just downloading some stupid app from somewhere, I'm developing my own and you can try it also. Again, studies and surveys and everything else that I could possibly find and my own surveys that I gave to students indicate that that this is exactly what students like. They do like not just the fun factor, not just the factor that it's in their pocket, but the fact that they can enjoy the results of their work immediately and show it off. To them, it's I don't want to say it's a decisive factor, but it weighs very heavily on students' approval level, so to speak, of what they think is is cool, what they think is a good way of doing things and teaching computing. So I've been pondering all these things for some time around 2008. And then I thought, well, wouldn't it be nice to actually put together a course that will incorporate all these ideas? For the time being again it was 2008 or 2009, it was just -- I was just looking for a fun course, to do something different. So I taught a course on mobile game development. Worked fine. I kind of liked what I did. So I put together a paper and sent it to CCSE. It's the conference in computer science education in the United States. Again it's not a national, it's an international conference but it takes place every year in the United States. And it is just a conference, EDC, where Nickolai and I met this summer, which is focused on exactly the same topics. But anyhow I believe it was in 2009 where I had a paper at CCSI talking about these things, it was well received and somebody told me well are you applying for some money to get this going? I was like should I? They said absolutely. So I wrote a grant proposal to National Science Foundation. And they said go for it. So for the next two years I was kind of locked into this project which was funded by NSF and working on developing these mobile game development modules. The idea here is to create a number of projects that are reportable, that an educator could take and incorporate into, incorporate these modules one or more into their computer science courses. This project -- this NSF-funded project has been going on for two years, as I mentioned, and I've been developing it together with a friend of mine from Rose Hall International Technology. The way these modules work, the focus of each module is not just to play a game. Yeah, students will get to play and develop a game. Well, in the opposite order. Develop and then play the game. But it's not playing for the sake of playing. It's about two things. Trying to reinforce some of the core topics such as, for example, arrays or loops or decisions or whatever. And at the same time introduce one or more advanced topics. Artificial intelligence. Networking, databases, security. Why am I doing this? Remember, one of the premises that I made in the beginning was that students do get disillusioned in early computer science courses. If we expose them to all the visions of discipline yes, there is coding, you have to do that, but once you are done with that you'll be able to do all these other interesting things, well, we hope they're interesting to them, which may or may not be directly related to programming. So AI. Or databases. How much programming is there in these two disciplines? Well, probably there's some but it's not programming for the sake of programming. So whatever might tickle their fancy, hopefully students might get to see something other than just programming and see that, oh, so this is what computer science is about. This is what you can do with a computer science degree. So each of these modules focuses on one or more of these, quote/unquote, advanced areas. There are no interdependencies among these modules. Instructors can take one or two or several and put them into their courses. And the primary audience is CS-1 data structure in the courses at a similar level. Although, I know these models have been -- somebody used them in more advanced courses. So I'm using Java on these courses, on these modules. And the questions that I'm getting asked a lot is why. Why oh why will you ever use Java. I'm asking that question myself, why. Well, if I were to do this now, I would stay away from this as far as possible. Not because I dislike Java. No, just before coming here I spent a few days in San Francisco JaveOne conference, and you have to admire Oracle for all the support that they're drumming up. But well there are a couple of reasons why Java is the platform for this project. Again, I started this in around 2008. So what kind of alternatives are there or were there, should I say, in 2008 for any kind of mobile application development? Well, Android was not anywhere to be seen. IOS was taking off. But as with anything coming from apple, you have to develop your code on an Apple computer. Which is great, except they're expensive and very few universities have dedicated labs with Macs. Perhaps the most important reason is that Java is the language we're teaching students these days. If you look at the national curriculum for computer science it's Java, Java, Java everywhere. One of the objectives of my project is to try to engage students that are coming in. A lot of better students, should I say. They take advanced placement courses in high schools. There they really don't have an option. If such courses are offered in their high schools, they are in Java. So that was pretty much the primary reason why I stuck with Java. And, again, at that time it was not just the environment that we're teaching Java as educators. Well, the vast majority of us, at least. But also for the lack of alternatives. The biggest reason why I regret that is because, well, oh, well, one other thing. Again, back then in 2008, pretty much -- or 2009. Pretty much whichever platform you look at, except for IOS, those phones, those operating systems running on those phones, they could run Java applets, and that wouldn't be a problem. They could run native code, written in whatever it might be. Or they could also run Java applets. These days, how many operating systems, mobile there that actually run Java applets? Not too to teach these things, but the skills that the mobile application developers in Java, they're anywhere. operating systems are many. So yeah, it's fun students would get as not really leading them >>: Android ran Java. >> Stan Kurkovsky: Yes, but it's a little different. Java libraries I'm using there, there's a special Java API for Sprite, and canaba and, et cetera, et cetera, which there's a subset of Java called J2EE. I do love Java but it's a little bit different. It's something else. I want to make a step back and say the objective of this project does not teach students not to make them proficient mobile developers, not at all. The objective is to allow them to have some fun while actually learning things and trying to enjoy the richness of the discipline. Through all the diversity they can find in the mobile game development. So I would like to use one of the modules and try to illustrate what's in there. Every single module is based on some well known game. Some are ages-old board games. Some are, some of the games, some of the modules are based on a well-known console games or arcade games. So there is this Battleship game that everybody I hope played once in their lives. I was completely appalled when I saw a recent movie, it was a [inaudible] experience, I'm not sure how I managed to be dragged into that movie, but my decision to use Battleship as a platform for a game module had nothing to do with the movie. That's a disclaimer that I feel I had to make. The movie was that bad. Anyway, so Battleship. Everybody knows how to play it. It's a two-player game, and you exchange some moves and when you tell your opponent what move you're making they tell you the result. So everybody knows this. So this is little bit Well, come central to the kind of game that we could use to teach students a about computer networking. Where are networks in here? to think of it, the idea of communication protocols is computer networking. And when the two players exchange information about their moves, well, they are communicating using a certain protocol. So we do a couple of things here. First of all, the students get a big scaffolding code, which already has quite a bit of the GUI infrastructure and most importantly message passing protocol. We wouldn't want CS-1 students to program sockets. No, it's already there for them. What they need to do, they need to understand what a communication protocol is and to implement their own. It might sound like a tall order, but actually it's fun. And most students are quite capable of doing this. Before they get to play this, before they get to implement this in mobile devices, I asked them to -- well, play the game on paper and pencil. And think about the information that they're exchanging. And try to formalize, put it in some kind of format, by that time in the course in the CS-1 data structures they would know about formats. They would know about different ways how they can formally explain the information that they're send back and forth and rules and decisions that they're making based on what they receive. All they have to do is play the game on paper and pencil ask try to think about the formalities of that information exchange that's going on and simply take that information and put it into simple code. And they can do it. I'm saying it not because I think they can do it. I'm saying it because I know they can do it because they did it. And there's a couple other things going on in a typical module. Of course, there are learning objectives and learning outcomes. In this particular case we expect students to learn basics of communication protocols and be able to implement a simple protocol in Java. And most -- so this would be their exposure to an advanced topic. A core concept that they would be reinforcing here is, of course, decision-making. So this being a module that we would like other educators to adopt, we have to bundle it with lecture notes and all that good stuff. But we're trying to make it fun for students and for every module we're trying to give suggestions as to, okay, what else can they do? What else can students do with scaffolding or the code they're going to create? Well, in this particular case, the framework that we're giving them essentially would allow them to use that framework for any kind of turn-based game because that's what it is it's a turn-based game. They can use the message passing sensor between the phones to implement similar games that they use two players. Also every single module incorporates this element which I like to call creative exploration. So using the same game, sometimes it's -- I'll be honest with you -- it's often quite easy how you can completely turn the semantics of a game kind of on top of its head. So for the battleship game, there is a game called Crazy Gardeners. We don't implement it, we just give students enough graphic experimentives and background and everything else to do that. So Crazy Gardeners is a game of two gardeners who have flower beds what are they trying to do, destroy their flower beds. Sounds ridiculous but actually students like that, especially those who like to destroy things. And they don't have to fiddle too much with the code once they have it. All they need to do is replace the graphics assets. Of course, while knowing what they're doing. Just to give you an idea, there is another module that implements a Connect four. This module, of course, is aimed at teaching some -- not teaching -- introducing students to basics of artificial intelligence. With this particular module I would like to illustrate why a game like this would be a special interest to be offered on a mobile device. So with all the good things about mobile operating systems and everything, the devices on which this code runs, they are reserved constraint. There's not as much memory you would find on a typical desktop and no virtual memory to speak of. And the processors as good as they are they're still much slower. When you give students some scaffolding with different handlers where they can write their own or substitute different search heuristics they can easily run into situations where their search space just explodes and the program runs out of memory, and that's a very, very good teaching moment to explain to them what search space is and how it relates to memory, or another situation when -- well, maybe the game would not run out of space but it might grind to a screeching halt if the search heuristics just happen to be too slow. Again, a good teaching moment explaining what is going on and teaching them the balance between space and time in terms of computer programming. So it's all good. But we have to figure out whether this is actually working and see what the students think. So we enlisted a couple of professionals who all that they do is they do additional research. They give different surveys to students and they do their own magic. So I won't bother you with all the boring acronyms and stuff like that. But what we're trying to measure here is did our -- so when we give students this game development project, does it have any kind of effect on student persistence, on student engagement and motivation? One important thing to keep in mind it was not our objective to try to improve student grades. We want them to be more interested. We want them to be more motivated in what they do. Boosting the grades would be great but this was not our objective. As a consequence, we were grades would not go down, students are spending too something through playing trying to make sure that at the minimum the because that was a possibility. What if much time playing games instead of learning these games. So over the course of four different semesters, we offered these gaming modules in several sections of CS-1 course at different institutions at my school and Rose Holland and for every offering we had a test and control group, a control group would be traditional section taught as it did before. And the test group would be typically a section of the course taught by the same instructor, but with this module incorporated. Other than that the students would have exactly the same experience, the same tasks, same lectures, same labs, same instructor same everything. The differences were actually quite interesting. And I'll just probably skip to the summary of these results. Even though the overall report is quite large, with lots and lots of interesting or actually boring statistics, the underlying theme of the results was this: Students definitely liked it. And why wouldn't they? Again we were trying to look at the metrics of their engagement. How interested they are in learning about things. And there were clear positive trends in both institutions. However, it was quite interesting that it appeared based on the analysis of the statistics that it worked better at my school, not because it was me -- actually it wasn't me offering these modules there. But the demographics, student demographics, are a little bit different between Canadian State University and Rose Hulman, it's pretty much the top-most school in the United States in terms of engineering, computer science, education like that. My school is quite an ordinary regional university. So we have all kinds of students whereas at Rose Hulman they basically have the cream of the crop. And we kind of did it deliberately. When we were writing this proposal, we wanted to have two different, quite different universities to prepare our results. What it boils down is something I did not really expect. Kids at Rose Hulman turns out expected a very, very traditional experience. They did want to see those boring examples about calculating average salary. They were absolutely fine with that. And based on the comments and based on the statistics that we got, the effects were such that, okay, games, we don't want that. We're here to learn about boring, dry coding. That's what we want. And why are we doing all that? Mobile devices, no, no, we don't like that. We don't care about that. Whereas more traditional students said, oh, great, we get to play games. The most important thing is that the grades stayed level between test and control group. There was no decrease and no statistically significant increase. But motivation clearly went up. Student engagement with the course material and their opinion about the course instructor, course material, et cetera, et cetera, went up regardless of -- well, especially at my university, but overall with the statistically significant measure, these metrics did go up. So, again, going back to that big concern that I indicated at the very beginning, was there a balance between fun and learning? The students have fun, most definitely. There is no doubt about that. And, again, it's based on the statistics that we collected. Did they learn something? Again, we're not trying to teach them how to become proficient game developers. We're not trying to teach them how to become really good at mobile application development. We're simply trying to keep doing the good job that we hope we're doing and teaching them CS-1 material. Did they learn all that? Yes they did, because their grades as I mentioned they stayed level or even improved, but again not at the statistically significant level. So in that respect I believe that we did achieve the objectives that we set in front of ourselves, which were trying to boost student engagement motivation. So I hope I did not bore you to death, and if you have any questions, feel free to throw them at me yes. >>: You mentioned some surveys and saying that the students wanted this kind of teaching. When these students showed what they had done to their friends, did they sit there and play the game, or did they show them the code? >> Stan Kurkovsky: No, they did not show the code. Well, typically it would be quite -- again, when we're talking about showing off what they have in the mobile device. On the mobile device normally you wouldn't be able to show the code. I mean, you can do this, but it's not what -- it's not what students would want to show off to their friends. I would hate to go off on a tangent here, but I have done a lot of research which really isn't CS-related. It's more sociology, if you will. You know, things that students perceive as cool. Things like that. So to a computer science student, if they have a non-CS friends, they would be terrified of showing them code. Because if they do that their non-CS friends might perceive them as too geeky and a typical CS major would not want that to happen. However, if you show them a working product, you know, typical -- a typical non-geek person they do not have a clear association between code, boring, working product, cool. They don't have the connection. So if you show -- if a non-geek sees a nice game or something on the phone, that's great, fine. If they see that, oh, that's what your code does, that might have some negative connotations. Anything else? Well, thank you very much. [applause]