44. Industry realistic experiences

Student motivation is enhanced when students see that the work they are doing is relevant to their future careers. In this episode, Dr. Bastian Tenbergen, an assistant professor of Computer Science at the State University of New York at Oswego, joins us to discuss how industry realistic projects may be used to enhance learning in software engineering classes.

Show Notes

  • Daun, M., Salmon, A., Tenbergen, B., Weyer, T., & Pohl, K. (2014, April). Industrial case studies in graduate requirements engineering courses: The impact on student motivation. In Software Engineering Education and Training (CSEE&T), 2014 IEEE 27th Conference on (pp. 3-12). IEEE.
  • Daun, M., Salmon, A., Weyer, T., Pohl, K., & Tenbergen, B. (2016, April). Project-based learning with examples from industry in university courses: an experience report from an undergraduate requirements engineering course. In Software Engineering Education and Training (CSEET), 2016 IEEE 29th International Conference on (pp. 184-193). IEEE.
  • Dijkstra, E. W. (1959). “A Note on Two Problems in Connection with Graphs.” Numerische Math. 1, 269-271.

Transcript

John: Student motivation is enhanced when students see that the work they’re doing in their classes is relevant to their future careers. In this episode we examine how industry realistic projects may be used to enhance learning in software engineering classes.
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: Together we run the Center for Excellence in Learning and Teaching at the State University of New York at Oswego [Music]

John: Today our guest is Dr. Bastian Tenbergen, an assistant professor of computer science at the State University of New York at Oswego. Welcome!

Bastian: Thank you, thanks for having me.

Rebecca: Today our teas are…

Bastian: Well, upon John’s recommendation, I’m having the mint herbal mix tea, which is excellent! I’m a peppermint tea drinker, so this is blowing my mind right now.

Rebecca: Excellent!

John: I’m having ginger tea.

Rebecca: I’m having Prince of Wales today.

Bastian: I like the ginger tea, that is my favorite tea.

John: It’s good.

Bastian: Ginger and fennel and peppermint, those are my three.

John: We invited you here to talk a bit about the projects that you have students do in your computer science classes. What classes do you generally teach?

Bastian: I’m teaching in the computer science department, but I’m mostly teaching software engineering courses. We actually have two separate majors: we have computer science majors (Bachelor of Arts and Bachelor of Science) and we also have a software engineering Bachelor of Science program. People usually confuse software engineering and computer science or at the very least don’t really know what the differentiation is. In contrast to computer science where it’s really all about programming and all about finding optimal algorithms to solve problem x for person Y, software engineering is concerned with the process of development from A to Z. So from requirements all the way to programming which is a small part of it, all the way to Quality Assurance and also budgeting. Also, the business aspect of it, so it has a wider focus.

Rebecca: It’s a little more client facing?

Bastian: Very much client facing, yes. By trade I’m a requirements engineer you can say and a very smart person who very recently submitted his PhD dissertation (which I’m very proud of him that he did finally did that). He wants to find requirements engineering as a socio technical process that implements the vision of a system given the time and budget constraints that you have. They usually also call us the context of the system, the developmental context of a system. It’s the budget, the time, the resources you have and such things. Those are considerations during software engineering.

John: In what classes do you have students engage in projects?

Bastian: Well it is very hard to teach computer science without actually using projects. You can teach the skills but at some point the art of making software becomes more than the alignment of skills in a particular way. Legitimately almost all classes we teach have a very heavy focus on projects. I’m teaching a software and safety requirements engineering course which is project-based, at least a quarter to half the students grades depends on the project. I’m also teaching a software quality assurance class where at least a quarter, sometimes half of the grade depends on project performance. I’m also teaching occasionally capstone courses, where the capstone experience in the software engineering program really tries to simulate how an independent developer develops a spoke software for one individual client and one of my favorite things to teach is a class called “Software Design”. The term design implies software architecture but it’s not just that. For those software engineers out there listening, this particular course is called that for historic reasons, but it’s really a design process class. The entire class collaborates together on producing one substantial piece of software, which is usually on the first day of class. I demand like big evil Papa Smurf that this project could be marketable, so the explicit goal is we want to market it, which sometimes works and sometimes doesn’t, but that’s the goal. Then we differentiate the students into teams and have a database team, a GUI team, we have graduate students at our university that specifically focus on usability and human factors so we have those as a team, we have requirements teams, we have Quality Assurance teams. They have to learn not only how to work together, they also have to learn how to apply their skills, have to learn how to best make design decisions, how to communicate them and not only how to communicate them with like-minded peers that are also scientifically or engineering capable but also with a stakeholder. Software engineering in general is very focused on the people who are giving the money for a project. In my classes I really focus on the fact that students should be able to argue their rationales, not to other engineers and not to other technicians, but to their grandmother because if you can explain it to your grandma, you can explain it to the person who gives you money in the project; and that usually worked well.

John: How early in the term do students decide on the project?

Bastian: So, It depends. It depends on the course. In my requirements engineering and software quality assurance class where we also teach skills, we also teach requirements, solicitation, or you teach let’s say data flow based testing, which is a new technique for them to pick up. There, I usually pick the projects for them or if they have a particular good idea we’ll discuss it, but usually it’s in the first week or so that they finalize the project. In capstone classes and in the software design process class, I usually conceive the project ideas and then we make the necessary choices, let’s say the necessary preliminary choices in the first week. What I mean by necessary and preliminary choices it’s this; I basically say “I want a universal all-transfunctionater” and no one has any clue what that is and I say “great it’s your job to ask the stakeholder, who is also me, what I mean by that.” Then the requirements team would differentiate the people into teams and the people who self-select into requirements they say: “Ok, well Bastian, what did you mean by that?” …and I say “Well, I meant… really… whatever… a cow milking device.” So the project kind of takes shape. So, I force them to come up with the requirements and to get them out of me, so that, as an instructor I basically have a dual role… or actually triple role, sometimes quadruple role and I’m project manager for them. I’m also the stakeholder, I’m also the person who gives them advice and the instructor that says “dude you shouldn’t do this because X & Y & Z or whatever. Or, maybe here’s a great idea that someone else just had and maybe try this.” More often than not I’m also the conflict solver and a psychologist that lets them cry on the shoulder because at some point during the semester everyone is just frustrated. This is part of the experience I guess but that’s why I usually tell my students the trick is to be successful despite other humans and once that idea clicks, working together never becomes a problem ever again. So as you lose one conflict earlier in the semester and then it kind of dissolves and this is when you see the students go from students to professionals. It’s my favorite class to teach because you can see how the students go from “professor, how do you want this” to “well Bastian I know you said you want a cow milking device but see we don’t have any cows, so how about we build you this instead”. It’s important in these kinds of projects for them to be able to communicate what the stakeholder wanted versus what we can conceivably give to the stakeholder given the time and the budget and the people that we have on staff.

Rebecca: Or what this stakeholder may actually need and doesn’t realize that they need.

Bastian: That’s right! Two years ago, I co-taught to this class for the first time which was great because then we could literally play good-cop and bad-cop. One stakeholder and one instructor will always be against the ideas, which believe it or not wasn’t necessarily me, and the other one was always in favor and would always say “oh yes that’s fine, that’s fine, Keep going”. But you know even if you have someone who constantly approves of what you do you don’t know whether or not you’re actually making any good progress. So it may feel good to have your ego stroked and be told that yes everything is great but that doesn’t necessarily mean that you’re making useful progress. Really in the end the only way you learn is if you make mistakes. On the other hand of course being told everything is bad or everything is completely horrible and how dare you even propose this doesn’t help either. So the truth is somewhere in the middle and it’s for the students to find out what goes. That’s the tricky part about teaching this kind of class, is to guide the knowledge discovery process such that they find it but they can still be successful despite having to do all the work themselves really.

Rebecca: So you’re describing mostly the setup for your software design class right? Which is a big team right that has small teams on it, but you’re all working on the same project.

Bastian: Yes.

Rebecca: Are your other projects and your other classes also set up so that everyone’s working on the same project or individuals working on a project? How are the setup similar are different?

Bastian: You have teams of students I have a very much focused on that that students would at least together with one other person. And the reason is, four eyes see more than two eyes, that’s why. Plus I encourage them like, hey, you know if you talk to another person, if you vocalize your problems, it helps, it stimulates your thinking. So that’s why I do this for example my requirements class, I give the general theme of the project and then let the students do some of it on their own. For example, a little while ago when I taught this software and safety the requirements class first here in the US, I gave the students the opportunity to I said, “okay, we have these cyber physical Rovers or robots, never mind what cyber physical systems are but it’s a buzzword and they can do certain things something makes them special”. We discussed this in class and I said, “we have these robots, and I want you to do something cool with them.” “They each have individual functionalities, pick one for different sensors, different robots had different sensors, pick one and do something fun with it”. And they pitched the project ideas. For example, one of them said, “I want my robot to exit a maze.” Great idea do it. Another person said, “I want my robot to use the camera and use computer vision to recognize another robot and drive after him”. And it was a cool project. Another team of thing was three students actually said, “no we don’t like the robots we’d much rather do something else and here’s an idea”, and I said “okay”. Soon as the learning objectives that I have to find in my syllabus are roughly aligned, I’ll let them go. My general philosophy is if the student has a better idea than me and can argue it, ok. Because I want to learn something too, right? (laughter). So I let them do it and let him explore it if they have the idea right.

John: The students would have more ownership till when they come up with the idea.

Bastian: True. Usually I’m not sure if it’s me over the project or it’s just those cute little robots that we have, but usually students are quite enthusiastic about projects. For the coming semester believe it or not we bought programmable slot cars. Remember those slot cars that you used to race on the like little tracks, you a little controller in your hand you can push more and less gas and throttle. We bought programmable ones and we’re gonna be using that in a project. I’m super excited about this and can’t wait to play with that. I’m hoping students will be excited about this too. And if they’re not then fine they’re not expensive.(Laughter). Plus we have several other faculty in our department who are quite excited about these. I’m not going to tell you the name of the manufacturer but they have a very cool API, which is an application programming interface, which is really simple and open. I haven’t tried them out yet, so I’m hoping it that’s a needle platform to automotive software engineering projects which would be cool.

Rebecca: So, as your students are working in teams and you’re trying to make sure that they’re prepared for professional life, right? You’ve talked a little bit about thinking about clients and things like that. How do you make sure that the problem that they’re solving is realistic and it’s not pared down so much that it’s unrealistic? Sometimes when students self define a project, it’s in a context that wouldn’t generally exist when they are working on their own unless they’re at a startup.

Bastian: That is so true. I would argue that finding the project not necessarily the scope, but the project domain is probably one of the two hardest things about doing the project. In fact, I’m not sure if I’m allowed to say this and make some advertisement on my own behalf here, but colleagues of mine and I wrote two academic papers and we’ve just submitted the third one on project-based learning in industry-realistic case examples in software engineering to a fairly substantial fairly high ranking conference. The industry realistic examples, they usually reflect one or two aspects that you would commonly find in let’s say industrial development projects. For example, the problem of, let’s say sensor integration. If you have a little robot and you tell the robot to rotate 90 degrees, you can know whether or not that thing actually turned 90 degrees because the one motor if you have two wheels, assuming you have a two-wheeled robot one motor might be have different manufacturing tolerances and maybe a little bit stronger than the other one, so you may be turned 89 degrees, maybe you turn 94 degrees. So how do you fix that? Well you could put a little sensor on it that does that, but the only rotational sensors you have they are going to be inaccurate too. Especially if you have let’s say have the robot run on carpet rather than tile. All of a sudden the physical setting and that the robot is in has a great impact on the software that you’re developing, and that is an industry realistic problem. Let’s say you fly an autonomous aerial vehicle somewhere and try to detect wildfires, which we are currently experiencing a very hot summer with a lot of drought. So they do this, they use drones to detect wildfires. How do you know you’re actually currently flying through smoke as opposed to through humidity or through fog or through a regular cloud? You have to use sensors. It’s a realistic problem. So the domain flying an actual drone is hard, so we use a little robot which however has the same kind of problems. I was very fortunate that earlier in life, I was working with some industrial companies in research projects and so it’s relatively easy for me to figure out what could be a challenge that the software developer or software engineers is going to be facing. So in those two papers that are just described, we focused on how to apply industry realistic case examples and we figured out what kind of properties these have. For example, you want to be sure that the project that you give to your students doesn’t have a bunch of challenges, but just one is usually enough, just to focus on one little challenge. For example, get the little robot to rotate accurately, but you don’t tell them make a project that lets the robot rotate, because that’s boring. Instead you say, “hey, why don’t you write an overtaking algorithm for robots?” And usually you know full well that in order to make those robots actually overtake one another like cars on a highway, a lot of things have to fall into place. First for example, you have to figure out how to make this robot drive straight and that is already a project in an art of itself. So the other important criterion for these industry realistic projects is to have the project scalable. So toward the end of the semester I usually joke with my students and say, “well, if you can’t finish your project in time, it’s either because you didn’t scope the requirements right, or because you bit off more you can chew, development is harder than you initially thought, or maybe because we haven’t redefined success yet.” So if you can’t be successful redefine success. Which when I say that really what I mean is I tell them, listen, you can’t deliver what you wanted to deliver, fine, not a problem happens all the time in reality, instead tell me what we can expect. Given the time that’s left what can we expect. “Well, we can actually make the robot overtake”, they will say, “but we can make it drive straight with a certain level of accuracy.” That seems boring and uninteresting when I say it like this but it’s actually a remarkable feat. At the end of the semester, two kinds of students those that are happy to be done because this was horrible experience, the minority thankfully, or you have the people that say, “oh my god, had no idea how hard it actually is to interface hardware and software.”

Rebecca: Really a big lesson in scoping, it’s like how do you break a big project into small pieces.

Bastian: Absolutely.

Rebecca: Understand that small pieces have to be completed before you can put them together to make a big piece. It’s like modular design.

Bastian: Yeah, absolutely. Modular design is one of those keywords buzzwords almost from the 90s, but they were right. You divide and conquer is a recurring theme in computer science that works everywhere. If you want to sort numbers you divide and you conquer it’s the fastest way to do it and if you want to develop a software project you divide and you conquer. Your first build project one and project two. You can scope this whatever way you want. Very often actually I have students who halfway through the project realize the potential that the project has that they’re working on and say, “hey Bastion, I really would like to bring this project into this direction instead I know you said overtake algorithm, but let’s do a path finding algorithm instead.” Esker Dijkstra in the 1960s wrote basically the silver bullet of shortest path algorithms and, can I implement that and put it in the robot? And why not? Just last semester I had someone interested in that doing it. The third characteristic about these projects is don’t be a stickler too much for what the industry really experiences and let the student figure it out on their own. And the one hand you could simulate what companies develop software to particular degree. So you could say, oh we are all now going to fill out application slips or vacation slips or things like this right, but that this misleading from the art of developing software. On the other hand when you tell the student hey listen or when the student asks, “hey listen, I want to bring this in another direction because I find this really interesting,” usually what comes out is something really rewarding, In my experience at least. So the third concept is don’t overdo it students will by themselves, with enough enthusiasm, drive it into a direction that is going to blow your mind, theirs and yours.

Rebecca: So when students are working together in teams and they’re taking on kind of different roles. How do you help the students divide those rules but then also make sure that they’re learning all of the skills or techniques that you want them to learn.

Bastian: That’s hard it’s really really hard and I would say that there’s no silver bullet of how to do this. It is an unfortunate truth that the larger the project is the more people are working on the same project, the higher the chance that at least one person is simply left out and you can be the kind of person that says okay, let’s try to live this person up to make sure that they learn something, but to be entirely honest, in part, in my opinion it’s a component of the experience to make yourself available to your team. So what I do throughout the semester is encourage students to contribute any way they can and students miss understand sometimes from a grading perspective that contributing means being the natural-born leader. In my experience, every team no matter what has one or maybe two people who are really great at the technology and also really great with people and their form naturally adopt the role of the leader. Assigning a leader doesn’t really work all that often. You can say okay you’re a graduate student so you’ll have more management responsibilities and that usually works. But often there’s one non graduate student who’s also fulfilling this managerial role so part of the experience is to find any way you can possibly be helpful for your team this doesn’t necessarily have to be the leader role. You cannot be a leader and be a rather shy quiet person and still get an A in project based courses, the way I teach him. Simply because what does an A mean? An A means here an excellent outstanding student and when are you excellent outstanding student? Well, in these cases when you’re an excellent outstanding team member for your team. When are you doing that? Well, when you contribute stuff any way you can to your team such that your team can continue. I’ll give you an example, if you are the kind of person that never volunteers presentations in class, that never contacts me as the instructor with questions, that never has an management important role in the team but manages all the background communication, implements all the code, and does all the right things in the simply couldn’t contribute couldn’t do what they’re supposed to do if it wasn’t for your input; you’re an A student, regardless of whether or not you’re very outspoken and outgoing or not. On the other hand, if you are a student who talks a lot and who is volunteering a lot, and who is putting themselves in the limelight a lot, but at the end of the day your team can’t count on you because you didn’t show up for the team meeting or because you promised something but never delivered or because the stuff that you deliver is of poor quality and your team decides to drop it and not use your work. Then you’re clearly on the other end of the grading spectrum. So I have a rubric, a rubric system where I say oh can a student clearly is the backbone of the team any way possible a B student is delivering useful stuff in regular intervals and C student is well useful when being assigned work, right, and a D student is unfortunately not useful even when prompted and an e student is the kind of student where the team said listen we’ve asked you 15 times you haven’t done a darn thing we’re done with you.

John: We should know that as we go for some reason we use E’s instead of F’s.

Bastian: Oh that’s right. I’m sorry.

Rebecca: Its alphabetical.

John: It doesn’t make sense to any of us but it’s been done here for a long time.

Bastian: It’s true. So a student that is failing the course with an E or other universities with an F usually those students know that they are. Usually before they are even assigned a failing grade I’ve had numerous conversations with them not as the manager, not asked stakeholder, but as the Papa Smurf (laughter) who says listen, if you want to pass this class, and for software engineering students in our university this class is a core requirement, so they have to have a passing grade in this class to graduate. I say listen, right now you’re not. We’re also doing peer evaluations so some people could say well if you were the one that subjectively evaluates the students isn’t that unfair and the answer is yes, of course. So I’ve experimented with this, just evaluations by me, and I had some good experiences with it and also some very bad ones, unfortunately. So within disputes, and it happens occasionally. What I like to do is peer evaluations where students within the same team evaluate other team members on a scale of say 25 points and usually, and remarkably, these peer evaluations match my subjective opinion almost all the time, 100 %. Students when they evaluate others are usually little positively biased and they are reluctant to evaluate people really badly, but if you ignore that, the subjective evaluation students have of each other are matching my observations very well.

John: How often do they get feedback in terms of how well they’re doing?

Bastian: Every day, every day. We meet usually in this class, we are meeting three times a week or the university has allotted three meeting times a week. I like to schedule two meetings where I’m there and they are reporting to me in daily scrums, those of you who are software engineers,yes we’re doing AGILE methodology specifically scrum. We do daily scrum so it’s basically, you stand up when and you say this is what we have done from last time until today, this is what we’re currently working on, this is what we’ll do next, these are the roadblocks, these are possible problems, and these are questions that we have. Five minutes, everyone does it and usually takes the entire class period to figure out problems, to resolve roadblocks, and most of the time it’s minor things but gotta get done because it’s the planning for the rest. So, during that is when I provide feedback by saying hey have you done this yet or have you thought about that yet, or John Doe here, was supposed to deliver this and that, did they? On the other hand, I’ve very often we have experiences that students say well, see our friend Jane Doe here foresaw two weeks ago that this is going to be a problem, so she already did this and that in anticipation. That’s how you know you have a really great student at hand, right, when they can anticipate problems in the future but would usually only experienced engineers are able to do. So they get feedback every time. What I do however, is the third class meeting that we have, I usually reserve for project work. Because that is the one day in the academic schedule for all students in the class, and if you have 30 people in the class, that I know they have time. Especially at the beginning of the semester I often hear things like, oh we don’t have class on Friday. I’m like, no, no, no, no no, you have class. I might not be there and the reality is that of course I’m there, I’m just then the next room letting them duke it out, and when the shouting or the crying gets too loud, I walk in. Or they decide on things and they have a question and needed it answered right then right there, so they walk over to the other room, or wherever, I am and they ask me. Or I just sit quietly in the room and let the students plan the work on their own. So, the idea is that the third meeting of the week is usually when they get to make progress when they need other people to be present. We also usually coordinate using online chat functions, we’ve used Discord.

John: This is used in a lot of gaming.

Bastian: Yes yes I use them gaming a lot right? Plus all my students they’re all familiar with it because they’re usually all gamers. And we even have a little Steam community going because, you’re nerds like that. So they coordinate through Discord and sometimes they say, hey Bastian is a fine if we don’t meet in person because John and Jane are out of town because, whatever, wedding or sick or whatever, is it okay if we do this online? I say sure, I don’t care how you get it done, just get it done. That’s all I care about. I care about you make progress any way you can. Next semester I’m actually preparing for having this class for the first time in a sort of hybrid fashion. Hybrid in how a university means a portion of the course is online the other portion is a physical in class meetings and what I want to experiment with is, moving this course to an entirely online fashion. Basically simulate how offshore development works. Let’s say you have a team working in Atlanta, you have a team that works here in upstate New York, and you have another team in India or Poland or Germany, and they work together they have to coordinate somehow. So we’re gonna do this next semester. I’m excited, really excited for that.

John: Interesting. Will there be a synchronous component where you have everyone report?

John: Absolutely. So the reason why I said hybrid is because we’re gonna meet exactly twice in person. It’s going to be at the first class we’re going to actually physically meet. I tell them that from now on we’re not going to meet anymore. Instead, we’re going to meet online using an online meeting tool. The university has a couple of licenses that we’re friendly enough to allow me to use one. So we’re using this tool, we’re doing online meetings where everyone has to be present and has to do the same things we would otherwise do if we had physical, in-class meetings; the daily scrum, this is what I’ve been working on, this is what I’m gonna do next, this is what we as a team have been doing. So we still have the immediate feedback component, we can still plan ahead and we can still do all of this. The second time we meet will be at the end of the semester when we present the final project and when we show the final implementation to the stakeholder. Basically like a sales pitch. Of course that’s gonna be problematic because specially the usability folks, those part of the team who are going to be conducting actual usability tests with human subjects committee approval and everything, so we do it the actual way that a company does it, they of course have to meet. This is for next semester I’m actually thinking about having them fill out mock travel requests just to get them accustomed to this. So we’ll see how this work. I’m quite excited about this prospect. I looked at the class roster the other day and I think I have a really cool crew of really capable people and as things gonna be great.

Rebecca: What are some challenges that you’ve run across teaching project-based classes and some advice that maybe you could give to a faculty who’s newer to this methodology?

Bastian: I would still consider myself new to this. I’m actually junior faculty so I’m only, in quotation marks, an assistant professor at this university for just about three years. But our department usually have four as project involve classes taught by more senior faculty. One of the most significant challenges that have experienced this when you have disruptive students. Every once in a while you have a student who completely hates the idea of projects and frankly I was one of them when I was in grad school, I was I was one of them because at the end of grad school I was like if I hear the word project one more time I’m going to flip out. These days I have a different opinion of this. I understand that some people are just fed up with it and I understand. Especially when they have to work with other people that they don’t know that don’t have the same work ethic that they do, they get frustrated a lot. So a recurring problem is student frustration with other students. That’s why I joke with them and say well this class is not about skill acquisition, I don’t need you to know how to compile code, at this point I expect you know how to do this. I need you to learn how to be successful despite other people in your group. You need to be successful despite the fact that you’re running out of time. That kind of stuff. So it takes a little bit of convincing sometimes but usually you’ll find the trick is to find an amicable solution. Then if there’s conflict between people then talk to both sides and say listen, I’m not your enemy, I’m not here to point fingers, I’m not here to agree with you or disagree with you, I’m here to help you facilitate a compromise. That is sometimes challenging. It happens every single semester, but it’s challenging. My strategy usually is to listen to both sides and say okay and maybe you just used the word, the wrong words, maybe you use the wrong language, maybe there’s cultural differences, you have students from other countries and they might not have the same work ethic that you do they may work 24/7 it feels like and you will really appreciate your weekends off. That is fine that is a fine, thing to do we just need to be upfront about it we just say, listen Jane, I’m not gonna work Sunday nights because Sunday night’s is when I relax. Or hey, I’m sorry Wayne, tomorrow morning 8 o’clock is the only time we can meet, can you somehow make it happen? So it’s really about compromise and it’s the case-by-case thing but my strategy is listen to them all and if they can’t make a decision on their own, then I make one, and they just have to abide by it. Usually it’s not a problem.

John: Which is also a useful job skill because they’re going to be in these environments.

Bastian: Exactly. In fact, when I say we simulate the way a software company develops software, I’m not joking. We really do it. These conflicts that you have in a class like this are literally the same. Most students really appreciate the experience, they may hate going through it but they usually love it at the end. In fact two years ago, I had a graduate student who was a graduate student of human-computer interaction, of which our University has a master’s program, but her background I believe it was art. She came from an art background.

Rebecca: Probably a graphic design student.

Bastian: Um, I’m not certain about that, but probably. The strength of the HCI graduate program is that it has so many people from so many different backgrounds, which is a great asset, and you can draw from really greatly talented people. Unfortunately, the downside is well these people they may have taken exactly one computer science class ,namely introduction to programming, and they have never done anything software, ever, ever again. But this person she hated going through this class she hated every single second of it but now she is working for a rather renown company here in upstate New York and she says I’m really experiencing this every day of my life, and I’m so thankful we went through this. This is the best worst class you’ll ever take in your entire life. It’s not about making students suffer of course it is about making them experience something in a realistic fashion, and tone it down a little bit. I don’t want to be the evil boss, I don’t want to be the guy who okay’s everything, and the truth is somewhere in the middle and usually that kind of pans out. Another really challenging thing though is when you have the disruptive student. Not just someone who’s fed up with projects or fed up with people in the project but actually tries to sabotage it. Not too long ago I had a student who was let’s say, extremely convinced of their own opinion, and this person, they were very sure of their own abilities. They were very keen on arguing they would argue everything until you’re blue in the face. They would misinterpret people stopping to argue because they just fed up with it, with oh they just conceded, I won the argument. So I had this person actually say, what everyone is praising me for my great ideas. I said well, sure, but you’ve done these three components that you’ve developed for this project, and your team has used none of them. Your team is no longer inviting you to team meetings, on my recommendation, because whenever you were at a team meeting they would not get anything done. So what do you think, what do you think this is, this is not okay, this isn’t an okay behavior. So in the end we found a way to help this person become useful after all, for the team, but it was very very challenging. In this particular semester I would think that unfortunately half of my teaching load was probably just taking care of this one person. Later I found out from other faculty that they were difficult in other classes also, so it wasn’t really me or the class, it was just personal issue. Even though this person took a lot of my time, ordinarily this class is the easiest to teach because, I don’t need to prepare anything, I have no preparation some grading afterwards but no preparation. On the other hand, you also have to be ready to face anything. You walk in a classroom and you don’t know what fresh hell awaits you that morning in terms of conflicts, but as I said, it’s only experienced as conflict while you were in it, afterwards you’re laughing it off and everyone is usually happy that it happened this way. So that’s what I’m saying is like a rewarding class to teach, but it’s kind of tough.

Rebecca: I imagine you probably have busy office hours as well with project based learning.

Bastian: Oh yeah. So much so that my faculty website says, office hours by appointment only. In reality it means, if I’m in, I’ll probably have time for you. Because with classes like these problems emerge right then and there, and I don’t mean interpersonal problems I mean, oh snap, we really need to use this one server but the server just went down. What do we do now? Or, we’re using this Google API and Google did what Google loves to do, namely change their API, what do we do now? Or, not too long ago, we were developing Facebook integration and Facebook from one day to the next took away the ability to post across pages on Facebook. So the project was kind of dead in the water, what do you do now? And that’s the problem that emerges immediately and you have to fix it, the students can’t fix it. When the resources that they need vanish, they can’t help themselves, there’s no way they can recover on their own. So that’s when after a short brief moment of panic, where I panic myself, we have to fix it somehow.

Rebecca: And you become the magic wand. [laughter] That’s what my students think when they’re standing in line for project-based learning. It’s like they come in it’s like, please I can’t move forward.

John: Those are all realistic type problems that they will be facing.

Bastian: It happens all the time happens to companies all the time, if you’re in the reality of the situation is Facebook doesn’t just take this away neither does Google. Google as opposed to, for example Oracle, they don’t really change their Java API all that much and if they do they have support for the things that you use to use,it call it deprecated, Google just switches it off. But they don’t do it from one day to the next there is usually a period where they tell you, oh by the way in a year or so we’re gonna switch over this in that server. So technically as a student you could be prepared if you did enough research but realistically, they have to complete this project, and our semesters are 15 weeks long, they have to complete this in 15 weeks so you have to make some concessions. Then we’ll just redefine the scope we just focus on something else. For example, a little while ago Google took away the opportunity of making your own google map, and when I say that is not a google map of let’s say, I don’t know, Oswego New York. Using the Google map engine, make a map of your bedroom, that’s what I meant. So they took away that opportunity or they took away certain functionalities that we wanted in one of our robot projects. I said well, they can’t do that so what I’m gonna do instead? One student suggested, hey, can we use the Unity engine to model a room that robot moves in? I said sure. Unity is a game engine to make video games. I said okay sure, you can do that, but I don’t know unity very well. Actually, I don’t know it at all. So, we have people here on campus who do know this, but I’m having a feeling to become good enough at unity to make this project work we’ll take another semester of itself. So why don’t you do it the easy way? Take a picture of the room that you want to use, and then “restorize” it and just fake it till you make it. So in the end the project was successful despite Google’s API being on.

John: What are some examples of specific topics that are used in design class?

Bastian: So in the software design process class, the first time I taught it here in Oswego, we did a family tree website, like those find your ancestry websites that you can find on the internet. Mainly because my Dad, he now passed away, but my dad was really into that and he wanted a website just to show our own family tree. We did that which was marginally successful. It was a decent family tree some of the features that we initially shot for were not delivered but, you know, we can safely say it was a family tree. A year after that we did an automated clicker system and I know that John here, is very much a proponent of using clickers and classrooms. If you have seen that millionaire quiz show on TV, they have little devices, and you can basically poll the audience in the classroom or in a question or multiple choice type answers. So we implemented it, and I’m of the firm opinion that no student should have to pay money or anything because tuition is already high enough, so we implemented a free one. That was using students own cell phones and wireless network they could poll.

John: You had some classes actually use it as clients for protocall.

Bastian: That’s right. So I used it in my own introduction to programming class. I used that semester, I used them as guinea pigs. They were excited beyond belief. They kind of liked it. It was very buggy of course mainly because doing it over wireless is really bad protocol. Plus if you have a wireless network in a large lecture hall it is an even worse protocol. So there were some problems with it that we couldn’t just solve, that were just unsolvable to us. But in principle, in a small enough audience, let’s say inside of 20 students, it would work great. Last semester was particularly exciting due to a scheduling error by, I’m not gonna say whom, but say by certain administrative forces, I unfortunately and accidentally had twice as many students in this class as I was supposed to. I like to teach this class with like between 15 and let’s say 25. Because we have a lot of students sometimes we have to unfortunately have 30 students in this class. Last semester I had 50, so yeah.

Rebecca: Oops.

Bastian: That was awful. But I decided after I talked to our department head, Doug Lea, and he says well, what you’re gonna do, pick up people and kick them out? We decided that this is a really evil thing to do to students so we just bit in the sour apple and said okay fine, let’s do a red team blue team approach. Where we had the same project and we split the class in half saying you’re team blue, you’re choosing a different design solution than team red. They both implemented a Scrabble clone. Those of you have played Scrabble board game, and we can use words and play words, and the idea is that people would walk by a kiosk system, which is actually running right now and the entrance of our science building here, is a computer in a display case. It’s running a cloned version of Scrabble. People can walk by with their cell phones connect to a little wireless that is emitted there and then they get a hand dealt on their cell phone, then they can play words. Of course they’d have the usual problems like, the first person that walks by plays an unspeakable word, so we made it Oswego themed and say if you play certain words you would get bonuses and such things. I would just mentioned in the coming semester I’m going to teach this class for the first time mainly online and I’m thinking about doing a Productivity type software. Something like it connects to your email account and looks for what your emails are actually about; how much time do you spend in your emails, how much time do you waste? For me, as faculty I always feel like I’m doing 5 % teaching, 3 % research, and 97 million % of miscellaneous administrative stuff, so mostly probably emails.

Rebecca: Mostly email. [laughter]

Bastian: I want to know if that’s true. I want to see what do my email say I am communicating about the most? On the one hand you have to connect to Google’s IMAP account and download emails and then you’d have to some natural language processing to parts of speech in the email and so on. Of course there gonna be privacy issues with this. These days everyone is really concerned about privacy, as they should, so we’re gonna have a little team that is gonna be specifically concerned with making sure that we abide by ISO 27000 privacy regulations. Unless the students have a better idea of course. [laughter]

John: So our last question is, what are you going to do next?

Bastian: I’m really excited. I had a student, I was successful in obtaining funding for a student project over the summer, and this student built an indoor GPS navigation system for robots. Now when I say that I mean mainly the API. So from this grant money we bought a little ultrasonic location beacons, you could say, which can be distributed around the room and the robot gets another location beacon slapped on top of itself, and then the robot knows in relationship to all the other beacons, where it is. Using this little system he implemented a GPS type API that allows us to say, robot go exactly there, and the robot will drive up to two centimeters precise to that position. The robot has obstacle avoidance, it has pathfinding capabilities, and all that stuff. So one of the things that I want to do next is have a fleet of those robots, we have several of those robots, but only one of them is location aware right now. When I put location awareness on several other robots and then simulate let’s say exoplanet exploration, using those little things. Let’s say you have three or four or five or 20 of those robots roaming around in a large room and one of them finds an obstacle and says, hey guys, here’s an obstacle don’t run into. It tells all the other robots where that obstacle is and then the next time when the next robot comes around, to a similar location, and says oh here’s an obstacle, here’s the question; is it the same obstacle? Because if it is, then we don’t have to put two obstacles on the conceptual map, we have to do just one. So it’s something I want to do it also ties into into my research. Like one of the things that I’m really, really focusing on is to make sure that the students just don’t do boring little projects. Every student in computer science has implemented a library system or an ATM, you know boring, been done before. I’ve worked, as I said earlier, in cyber-physical systems and safety-critical requirements and such things, so I use those ideas in my classes and I want them to solve tiny little projects therein. I just mentioned earlier, we bought these programmable slot cars. What I want to do next is do obstacle avoidance and automatic cruise controls with those slot cars and just automotive type software engineering projects. That’s what’s happening. I’m really excited about that too.

Rebecca: Great. Thanks for joining us today.

Bastian: Thank you for having me, I’ve really enjoyed being here.

John: You’re doing some really interesting things there.

Bastian: I’m not doing any of them. [laughter] The students are doing them. I’m just there for the ride, really. [Music]

John: If you’ve enjoyed this podcast please subscribe and leave 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. [Music]