312. Alice: Finding Wonderland

Many of our disciplines are unfamiliar to students until their first encounter in an introductory course. In this episode, Rameen Mohammadi joins us to discuss his first-year course that introduces students to computer science using an approachable hands-on experience.

Show Notes

Transcript

John: Many of our disciplines are unfamiliar to students until their first encounter in an introductory course. In this episode, we look at a first-year course that introduces students to computer science using an approachable hands-on experience.

[MUSIC]

John: Thanks for joining us for Tea for Teaching, an informal discussion of innovative and effective practices in teaching and learning.

Rebecca: This podcast series is hosted by John Kane, an economist…

John: …and Rebecca Mushtare, a graphic designer…

Rebecca: …and features guests doing important research and advocacy work to make higher education more inclusive and supportive of all learners.

[MUSIC]

Rebecca: Our guest today is Rameen Mohammadi. Rameen is the Associate Provost at SUNY Oswego and an Associate Professor of Computer Science. Welcome, Rameen.

Rameen: Thank you. Thank you both.

John: It’s good to have you here. Today, for the first time ever, we’re all drinking the same tea, which is Chimps tea, a black tea with honey flavor, fig, and thyme. And this is a gift from one of our listeners. Miriam in France. Thank you, Myriam.

Rebecca: Yeah, so far. It’s really tasty.

Rameen: Yeah, really excellent tea. We love it.

Rebecca: So we invited you here today, Rameen, to discuss your First-Year Seminar course that combines animation and storytelling using the Alice 3 programming environment. Before we discuss that, though, could you provide an overview of the goal of first-year seminar courses at Oswego?

Rameen: This is not a standard first-year seminar. First-year seminar courses are designed to extend orientation, familiarize students with resources, and things like that. Our perspective about this type of course, which we call signature courses at SUNY Oswego, is that you are welcoming students to the intellectual community that we have. So as first-year students we desire a number of outcomes to be met by these courses, one of them is critical thinking, they have to have a significant critical thinking component. Also, these courses need to have both writing and oral communication embedded in them. And one of my favorites is that they have to enhance the cultural competency of our students, we’re a very diverse student body, there’s quite a bit of opportunity to make sure students experience other perspectives. And I think courses of this type really need to address that. Our provost, Scott Furlong, brought the idea to us even during his interview at SUNY Oswego, about what they had called, at his previous institution, passion courses. Now, as I said, we call them signature courses here. But those of us who love our discipline certainly can understand when somebody uses the term passion. So what makes you excited about your discipline? That’s what the course should help students experience.

John: So, you’re using the Alice 3 programming environment. Could you talk a little bit about the types of things that students are going to be doing in the class?

Rameen: So Alice 3 is a VR programming environment. So what you do is you build a scene, you can bring avatars of various types, could be people, could be aliens, could be dogs, into a scene, and you have props, trees, mountains, buildings, that you could bring into a scene, and then you learn to program something. So they can talk to each other, they can move from point A to point B. And it actually turns out, they’re able to, and they will be, writing reactive programming, which typically is what we do when we design games. So the user acts in some way, and then you program the reaction in the VR world in that context, or things run into each other. And obviously, when you’re designing games cars, or other things may run into each other, and you have the ability to detect that and actually act on that. But at this point, they are already running about a month ahead of where I thought they could be in just about a month of the semester. So I’m really hoping we can get that far.

Rebecca: Can you talk a little bit about why you chose the Alice platform, and what you were really hoping to foster with students.

Rameen: So, just a bit of background about Alice, Alice is supported by researchers in Carnegie Mellon. I think Randy Paudsch, when he was at University of Virginia, is really the person that began the innovation with Alice. And he thern moved to Carnegie Mellon. Many people in computer science would know who he is because of his work in VR, but what he should universally be known for is The Last Lecture, which is a pretty amazing hour plus lecture he gave before he died from cancer. But that group has been working on Alice for a very, very long time, and of course, has had new actors along the way. Don Slater is one of the people that has been part of that group for a long time, and he’s very much involved and was at the time when I met him very much involved in advanced placement. And that’s something I’ve been involved in for a long time, advanced placement for computer science. So one of the things we do in AP readings, we have people do professional development activities, and he gave a talk about Alice and this is a long time ago. But when I first listened to him talk about it, and he showed the features of the system, I really didn’t have a place for it in anything I taught at the time. So it has been brewing in the back of my head as a thing to build a course around for a long time, but really couldn’t have done it until the opportunity came along to build a signature course.

John: For those students who do go on to computer science. It seems like a really nice way of introducing the concept of object oriented programming. Does it work in that way?

Rameen: So the thing to understand about object orientation is that most of us who are software engineers by discipline, database types, we are very comfortable thinking of a student information being an object and the fact that we have a container of student objects and so on. But it turns out that’s not necessarily as comfortable for students as it is for those of us who do this for a living. But when you say, here’s an avatar, and you put this on the screen, and you could tell it to go from point A to point B, that seems like a very natural idea to students, and the fact that this particular avatar, so suppose it’s a bird, has wings, and opposed to a person who has legs, you don’t have to explain that. It’s a concept as inherent in being a human being and 18,19 years old. So some aspects of object orientation that often is difficult for students that are really obvious in this context. So any object like an avatar of a person, dog, cat, whatever, they can all be moved from point A to point B. So they share a set of expectations and attributes. They have a location in a 3D world, and you can move them from A to B, piece of cake, they understand. But then you say, “Well, this one is a bird, it has wings.” So the fact that you can spread the wings or fold the wings would be a characteristic that exists only because of it’s a bird. So inheritance, which is a concept that we like to teach in computer science is just built into the way the system behaves. And no student will say, “Well, what do you mean, a bird can spread this way or fold its wing.” People just naturally know what it all means. And believe me, it’s not always natural, in some of the other things we try to do with students to teach these topics. So it does lend itself extremely well, in understanding that objects have attributes, they have functionality, and it’s all there on the screen, and they can see it.

Rebecca: I think Alice is really nice, because it is so visual. And so you get those immediate, “I can see the thing I did,” whereas I remember when I started learning some code, I was building a database for car parts, and it was completely abstract. And I cared nothing about car parts.

Rameen: Yeah.

Rebecca: So it didn’t make it that accessible to me.

Rameen: It’s not, exactly, then the other aspect of it that I think we need to think about, about the platform, is that you don’t write a single line of code, you generate 1000s and 1000s of lines of code, but you don’t write any. So if you have a particular avatar as the object that you’re processing at the time, in building your code on the screen, you could just drag and drop functionality it has into your code. If you need to loop and repeat steps, you drop a loop into your code and then put the steps you want to repeat inside that loop. So all the typical barriers a student had with syntax or various languages, whether it was Java, Python, C++ kind of wash away, because you don’t really have to know syntax at all you, need to know “what are you trying to do?” and what will enable you to do it, and then you can execute that. So far, clearly, that’s not a problem for them. Here is the screen, this part of it is dedicated to X, that part of it is dedicated to Y and they’ve been able to handle it probably from week one. So all the standard things that tend to take a long time, don’t take any time. And besides doing 3D graphics, if you are a computer science person, in my mind, is super senior level type of activity. You got to teach them an awful lot about data structures and other event handling elements that they must learn because that is what we all had to learn. But guess what, you can learn it with Alice in short order. And this is the course is proving that you can.

John: Now one of the challenges that I could imagine you might have as that students come in with different levels of prior knowledge or interest or engagement with computer science. Some students may have not written a single line of code in any language, while others may also be taking other CS courses at the same time, or have some prior programming experience. How do you address the differences in background?

Rameen: So my sample case here is small, I only have 17 students, but this is not a computer science required course. So this is one that has art students in it, it has biology students, and and it does have a few computer science students and then maybe this one with an AP computer science background from high school, and none of them are doing any better than these other kids. So I guess the point is, it levels the playing field in a pretty significant way. If you can think a thought you can probably write code in Alice. And I’m finding it quite interesting, since I’m not preparing them for another course… not only this course doesn’t have a prerequisite, it’s not a prerequisite for anything else. So the way I designed the course going into it, I went into it with thinking, okay, so if storytelling and writing a really cool story within groups is the best I can get out of them, great. If I can get them to a point where they can write new functionality for objects, and I can help them write reactive programming so they react to the mouse click or collisions of objects and so on, maybe I’m dreaming, but that would be fantastic. At this point, I’m pretty certain I can get him there without other stuff. But that was kind of the key coming into the course, I walked in with a mindset of being flexible, that if they are struggling, I’m not going to keep pushing it like I would typically do in a CS course, which is partly why you would also lose students, but at least in my experience with these kids, and I can’t say until I teach it again (and hopefully I can) whether it will be the way it works is that you show them how to do something, and then they go to work, and they start doing it and then they make mistakes, and we all do, and then you give them a little bit of a hint about potentially maybe a different technique they could have used to accomplish the same task. I’m just going to give you an example. So you want the bird to go from point A to point B, so it’s on the ground, needs to go up on top of the tree. So Alice lets you put a marker where you want it to go on the tree, because you can’t go to the tree, you’re going on a branch of a tree. So you need to know how to put a marker there. So you put a marker there. And then it just goes from point A to point B, it goes from the ground to the top of the tree, then you say “Wait a minute, that’s really not the way birds fly.” So now you got to figure out, well, how am I going to flap his wings to go from point A to point B, to go from the ground to the branch on that tree? So it turns out and I’ve come up with a solution to this myself, obviously, you can’t really teach these things if you haven’t thought about how you could possibly solve them. And one of my students, after like three weeks of instruction, she figured out how to do what we call in Alice a “do together.” So as it’s moving from point A to point B, the step that is happening at the same time is the flapping event of spreading and folding the bird’s wing and she made it very clear that the bird was flying [LAUGHTER] from the ground to the tree with no interruption. Then we need to talk about well, do they really need their legs hanging out as they’re flying? I don’t know much about birds, but I think they fold their legs back. So now we have to learn how to address some kind of a functionality that is about a part of the body of the bird. So this is the way the learning is happening in the course, kind of naturally, you’re trying to make a realistic action on the screen in the animation. Well, how are we going to do that? Well, we have to now address the joints like the hip joint or the knee joint or the ankle joint to make that much more natural in the way it works. And there’s no persuasion here, the student is trying to make an interesting thing. And then I’m there to help them figure out how do you make that much more realistic.

Rebecca: What I really love about these courses, and in what you’re describing with Alice, as someone who’s also taught code to students, particularly ones that are not in computer science, is that they’re thinking like a computer scientist, and you’re really getting them completely within the discipline, you’re hooking them right in because they’re leading with their curiosity. They’re not satisfied with the way something looks, so they’re digging in and digging in and digging in. And unlike our traditional way of structuring curriculum, where we think this is the foundational information, and this is the next thing we build on, it almost turns it totally on its head [LAUGHTER], and does it like backwards from what we traditionally do. And it’s really fun.

Rameen: Well, I think the students are at the center of that type of a decision, that for years, you see human beings that probably could do this kind of work, but shortly after they try and they get errors after errors after errors, they say, “Hey, listen, this is great that there are geeks like you would like to do this kind of thing. It’s not for me,” and they walk away from the discipline, even though they could have had great contributions in computer science. So for me if some of these concepts are introduced this way, where syntax and semantics, which is typically what slows people down when they first begin, even the systems we use… like how do you type your program? And how do you run your program? …there’s a whole bunch of instruction around how do you do anything. You just go to alice.org, you download Alice 3, but once you do, it’s here you go, you click here, and then you set up your scene; you click here, you begin writing code. Well, how you write code? Well, the object is on the left side, you drag the command from the left to the right, how far do you want it to go? Well, you gotta choose a certain distance that it needs to travel… really, really easy for students to take to right away. And I just had no idea what I should expect. You watch a lot of YouTube videos. I mean, I certainly do when I was preparing this course, of all these different people, young and old, building things and being proud of what they had built. And I thought, if I could bring that to a course for our first-year students, that would be really, really awesome. And I think that’s what has happened.

John: You mentioned that the students are able to interact. Are they all in one virtual shared space for the class? Or do they have to invite the other students into the spaces that they’ve developed?

Rameen: So this is a really good question, John. So when I imagined how the course was going to work, I had to think of a number of things. One, I asked our technology people to install Alice on all lab computers because I can’t assume or assert that every single student that will take a course like this will necessarily have the equipment that could enable them to run it. Even the Mac kids who had trouble at first installing the thing, and I needed people to help them to get it installed, even they could continue to work because we had the software on our machines. The type of collaboration that I advocate for in class is a little untraditional. At least I think you could argue that it may be. So like the other day, I gave them a 10-question quiz. So they answer the 10-question quiz. And then I said, “Find a couple of other people and persuade them why your answers are correct and their answer is wrong.” So now the whole room starts talking about the quiz. I don’t know if they’ve ever had an experience where somebody says, “This is not cheating, what I’m asking you to do.” Who gives a quiz that says, talk to everybody else to see what they answered for the quiz.

REBECCA; John does. [LAUGHTER]

Rameen: And that’s not surprising, but in my mind, is it about the learning process? Or is it about assessing or giving a grade? This is a very low-stake experience. So why exactly would I care if you talk to someone else about it? So why not persuade someone else that your answer is right? That’s a very different tactic than to say, “Do you know the answer? And are you right or wrong?” Persuading someone requires talking to them, requires thinking for yourself, first of all. Well, why is this answer right? And then opposite of that, you hear the explanation. Are you persuaded that what they said is accurate? Or do you think they’re wrong? In which case now you’re giving them back a different perspective, and then they change their answer. And of course, you could change your answer for the wrong reason. That’s just one example. I really want them to collaborate and work with each other. And every time somebody does something interesting, like the young woman who built the code that I had not been able to myself, having the birds fly from point A to point B, looking very natural. I had her come to the front of the room, plug in with a connector that is in the room and show everybody how she wrote her code. And we’ve done that at least a dozen times so far, where people just come up, plug their computer and show everybody their code. So we often are worried about students cheating and using other people’s work. And if it is about collaborative learning, then you really have to cultivate the idea that, you know, that was a really good idea, maybe I can do that. And I think hopefully, the course will continue to behave that way where I’m confident everybody’s learning from it. That’s the concern that I’m the only one who knows something, whoever I am as a student, and everybody’s just copying me or whatever. That is not my experience so far in this course. They’re just trying to do it better, and if you have a better idea, maybe I can take that and move with it. Then maybe I’ll make it a better idea. And you see that also with students. One of them figures out how to make somebody walk more naturally, and then the other one even enhances that, even makes it even more realistic in the way you would walk. And that’s kind of what I like to see happen and is actually happening.

Rebecca: So how are students responding? Are you cultivating a whole new crop of computer scientists?

Rameen: So, this is an interesting question. I am wondering, those who are not computer science students, whether or not they decide that this may be something for them. But I’m also… with Rebecca here, is good to bring this up… they might become interested in interaction design as a discipline to pursue and become passionate about. Those of us who do this kind of work for a living and have done it for 40 years or whatever, the engagement aspect is the critical aspect. If they are really invested in the learning process, they can overcome an awful lot of barriers, that frankly, I cannot persuade you to put the time in, if you’re persuaded that you could do something a little bit better, then I’m done. As a teacher, I’ve set up the environment in the way it should be where you are driving the learning process yourself as a student, and they look like that’s what you’re doing at this point. And we’re only within a month into the course and they are behaving that way. Now whether or not they will continue to take more computer science courses, and get a degree in computer science. I’m not really sure, but, hopefully, if they do interaction design, there’ll be better interaction design students, because some of the structures that they have to learn here would definitely benefit them in that curriculum too.

Rebecca: Yeah. When can I come recruit?

Rameen: Anytime. I’ve already had Office of Learning Services. That was one of the things I wanted to point out, that I’ve had Office of Learning Services, they came and they talked about the learning process. And besides what they have done for me and talking about the learning process, and it’s all research-based discussions, which is really critical for students to hear things that actually do work, and we can prove they can work. I talk about the learning process on a regular basis with them. And I’m very interested in them understanding why we’re doing anything that we’re doing. I mean, they may be used to somebody standing in front of them talking for an hour and I just don’t do that. I may talk for 10 minutes and then have them work on stuff and then as we see gaps in what they understand then I talk for 10 more minutes, maybe. I try not to talk a whole lot. I want them to be working. So the time I’ve spent is on building what they are supposed to do to learn, not so much talking to them on a regular basis during the 55 minutes that the class goes on. Unfortunately, I’m not quite sure that that’s the experience they’ll have in other courses that they take, because to me, there is a freedom embedded in the way the course is designed that is hard to replicate if you have to cover from A to Z of some topic. You get to “H” and people are having trouble, well, you just keep going. Well, I don’t if everybody has the luxury to say, well, maybe we need to pause longer because we can’t get past this point. I mean, what’s the point? We get past this point, you’ll never catch up to where the end is. So I am hoping some of them will decide to be CS majors as a result, but I’m more interested in seeing how they will do if they take more CS courses. I mean, if they take a CS 1 course, are they going to do better than a typical person taking a CS 1 course if they move on and take data structures and other courses we require? Will it come to them easier? I think it’s a really interesting question. And I think there’s a lot of research that advocates for the fact that they will do better, but I like to see it firsthand.

John: One of the things I believe was mentioned in the title of the course was storytelling, what types of storytelling takes place in the class? Is it the design of the scenes or is there some other type of communication going on?

Rameen: So the way you do animation, in general… and I probably should back up and say I spent about an ungodly amount of hours trying to learn how to do this, but I went about it backwards because I went after event-driven programming and interesting things that I knew Alice could do to write games. But then you step back from it and say, well, students can’t start there. I mean, that’s just not a good place. So then you look at the alice.org website, which gives you tremendous amount of resources and say, “Oh, designing scenes happens to be the first thing they teach you to do. Oh, maybe I should learn how to design a scene.” So you put the pieces that you want in your story on the screen, and if you don’t want them to appear, you could make them invisible. But the way Alice works, you have to put all the components in on the front end. It’s a little different than the way we do object-oriented programming. When we do object-oriented programming, you create things when you need them, you don’t think about setting up the scene on the front end. So that took a little getting used to, but that’s what you do. And then the characters you put on the screen can move, they can talk, they can fly, they can do whatever you need them to do. And my biggest interest was storytelling, when I was conceiving of the course was that I really want students, especially those from other cultures, other backgrounds, to tell their story, find a way to tell their story. And this is probably going to be starting as a group project for my students in a few weeks. And we’ll see how that actually goes. And obviously it has to have a beginning and middle and an end for it to be an actual story. But I’m just excited to see what they will actually decide to do and how they actually do it. Along the way, though, they’re going to need some tools. And that’s kind of what my contribution will be in making sure that they can tell the story the way they want.

John: It sounds as if developing this course required you to learn quite a few new things that were outside your normal teaching experiences. Do you have any advice for faculty who are working on the development of similar courses?

Rameen: So for those out there who teach for a living, the opportunity to build something from the ground up, especially something that frankly, when I first thought of it, I thought it’d be a lot easier than it turned out, because there was so much that I didn’t know how to do, but when you don’t know something you don’t necessarily know that you don’t know something. People who were doing it and I was watching them do it made it look very easy to me. But once I began to do it, I discovered how much work there was to come to a point that actually orchestrates a course, I mean something that is meaningful, and has a clear direction to it. So if you have that opportunity, even after 40 years of teaching, to start over in some ways and build something that you feel not particularly comfortable about, I really highly recommend people do that. Because that is what your students are experiencing every single day when they are trying to learn this stuff that you know so well. So having a little bit of a taste of what it takes to learn something you know very little about, I think is critical. So my message to the faculty who are listening, is that if that opportunity arises, by all means, take it.,

Rebecca: You certainly get a lot more empathy for what it feels like to not be an expert, when you’re learning something brand new again.

Rameen: Well, that’s the thing about most of the things we do. I’ve been programming for 50 years. So it’s one of those things where you’re completely in tune with the idea of: understand the problem, solve the problem, whatever. But where should the camera be in a 3D world in order for it to point at the person talking just the right way? I had to figure that out. It didn’t come naturally to me. The first bunch of programs I wrote the camera was always in the same spot and then I began learning that “Oh I have control over where this camera goes. [LAUGHTER] So maybe it needs to be somewhere else when this person is talking versus this other one.” That’s been a lot of fun to get a sensibility back into the system here that this stuff is not as obvious as it may seem.

John: We always end with the question: “What’s next?”

Rameen: So I certainly would like to teach the course more, and I also want to do some presentations with the faculty in computer science, and if there is interest in graphic design faculty to do some for them, too, because I think the platform is extremely powerful. It doesn’t cost anything, the resources that exist have been getting developed for a very long time and they’re pretty mature. And again, back to no cost. We all know how much books cost. You really don’t need one, you just use the exercises that they give you at the Carnegie Mellon site for Alice and go with it. So I really want to advocate for faculty to consider using it beyond just this first-year signature course.

John: Well, thank you. This sounds like a really interesting project that can really engage students.

Rebecca: Yeah, it sounds like a lot of fun. I can’t wait to come visit.

Rameen: Yeah. Thank you both. Really, this was fun. Thanks for the tea also.

John: Well, we have Myriam to thank for that.

[MUSIC]

John: If you’ve enjoyed this podcast, please subscribe and leave a review on iTunes or your favorite podcast service. To continue the conversation, join us on our Tea for Teaching Facebook page.

Rebecca: You can find show notes, transcripts and other materials on teaforteaching.com. Music by Michael Gary Brewer.

Ganesh: Editing assistance by Ganesh.

[MUSIC]