« The Stack Overflow Podcast

How a top-ranked engineering school reimagined CS curriculum

2023-04-28 | 🔗

Olin College of Engineering has one of the top-ranked undergrad engineering programs in the US. Its computing curriculum is a concentration within the engineering major, not a standalone major. The upshot is a liberal arts-informed course of study with fewer math and theory requirements than a typical CS degree and a greater emphasis on practical, job-ready skills like code quality, testing, and documentation. To learn more about how software design is taught at Olin, explore the course.

Andrew Mascillaro is a senior at Olin majoring in electrical and computer engineering. He’s currently a software engineering intern at Tableau. You can find him on LinkedIn.

Steve Matsumoto is an assistant professor of computer science and engineering at Olin; his academic interests include crypto and cybersecurity. You can find him on GitHub or through his website.

This is an unofficial transcript meant for reference. Accuracy is not guaranteed.
Don't let silence security tech get in the way of protecting your business, cisco exterior? simplifies security operations. Empowering teams to act on what truly matters faster discover, cisco equity are at cisco. Dotcom slash, go slash, axed d, A low everybody welcome back to these stack overflow podcast a place to talk all things: software and technology. I'm your host ban, pauper worse quarter in the world. China's are often by my colleagues and collaborators ryan Donovan, costly williams, higher. So for those who don't know right as the editor of our blog and her newsletter Cassidy as the seat yo over a contender and has been a contributor to stock overflows at a torrent
since I joined and torn in eighteen. Today we have a great topic: we're gonna be cheap, adding a bunch about computer science, education, Cassie, ride y'all both went through this in a fairly traditional sense right, yeah majored in computer science graduated in two thousand and fourteen, which I feel so old when I say that this man, it's almost been ten years. What would you say it makes me and ryan feel really all that the point here, am you went to see, em you and did computers? sir technical writing about, but me I I had a little specialization in computer science took the programming, fundamental to see us one or two and then a course, but I have our friends who were you knows, weeping in the computer lab for their operating systems. Course in such categories, of course, things going on gone, stuck with a cmu back in the late nineteenth and who knows where you be now,
I very core we're gonna chat with two folks from all in college today a bit about how they do curriculum some of their thinking on software design largest gas, offers simpson, also yeah what these things are. Gonna look like in the future, especially as in a sort of the, would the revolution is changing a lot of our approach to education. So without further ado, I would like to welcome you to the programme andrew. You want to introduce yourself to the listeners, hello. Everybody my name's Andrew I most senior at all in college of engineering. I made you know what you're gonna do pure engineering, brighton, do spend a lot of my time. Doing. Assorted software projects excited to share some information about that with you today, a drastic I'm an steve? Yes, I'm see Matsumoto, I'm an assistant professor, of computer science. Engineering here on college Emmy, my fourth year of teaching here
my specialization was in cyber security. Privacy have been moving more into computing education as well and like andrew. I have roger degrees actually in the dutch one computer engineering, but most of what I do on a daily basis is computer science I'd love to learn more about olin's computing curriculum, I've known some folks who have gone through that computer science curriculum over the years, but I've heard it's different from a traditional computer science cricket. If you could talk more about that yeah. Maybe I'd be happy to talk about that. So one of the things that we try to be very clear about is that we are not a computer science programme. That's why we in fact call it be computing curriculum is in fact not a major of its own, but it's a concentration within the engineering. Major part of the implications of that is that we have a very small footprint curriculum because of its status as it can. integration within a major rather than a major in and of itself,
And so because we only have a few courses in which to deliver that content. We actually have to be very careful about what we cover within those and the skill set. So I would say that I think the last I might ran the numbers we probably cover about seventy five percent of in terms of credit hours, of what a typical computer science curriculum would cover. So we have basically three required. forces we have an introductory course. We have a theory corso in a systems course. So that's! Basically, the idea is that students take one course that is sort of above the salt, like I'm at a high level course and a low level course. They also have to take a discrete math course, and then they have room for about collectives. So all told it's. It's only about six. Full courses were have material, but we try to offer.
A lot of education in terms of the skills students will need to succeed. We know that we can't possibly cover everything that you I need to know in your programme career and I would say even computer science programs can't really do that, but what we can do is try to equip you to hit the ground running in your career as a as a software engineer. So is this a more focused on the sort of like application of the the computer science ideas? I know the computer science program started as kind of math and still are heavily rooted in math and logic. So I wonder if you're at you're, getting closer to you, know fingers on the keyboard. I would say that that is very much true. We do have. I think Andrew can probably speak more to this, but we definitely don't have as much of a emphasis on math and also on theory, as probably other computer science courses. I mean I my undergrad
It was in computer science and math. So I feel like I had quite a lot of it here. It's just demand requirement is effectively one course I would agree taking the course it. It's like you jump straight into the development of interesting projects with the suffer, as opposed to focusing on the theoretical aspect of it. For example, in I dare structures and algorithms class. I made my final project a chest engine since I really like to play chest, and so it was more about applying that knowledge quickly into something that is more tangible, something more exciting. to the students then particularly under, like focusing on the map aspect of it is a lot of them. The coursework project based, I gotta. Do you just building things that you want to build?
yeah. I would agree that a lot of it is building things that you want to build. For example, in the introductory to the software design course we have a series of projects and some of these projects include reading dna sequences or creating games or doing other web scraping projects, and this is how you learn how to quote a few. Well, it's less about memorizing, the different sorting algorithms in use, to learn some of those things, but it's more engaging. So people tend to be really excited about doing projects that they're working on in. Of course, what would you say are the pros and cons of approaching it in this way? So I'd say like from the perspective of teaching these things. I think one of the as we find that students are really motivated to get a lot of different pieces of the project working too
really explore and learn things that are gonna be relevant to them. So our intervention force is called software design and the final project and, of course, has fed If you constraints all students have to do is to build a significant piece of interactive software so far, lot of them. That's a game. They get to think about how do game design how to accurately tat in code and they learn up libraries that are relevant to that which is often pegging, but students decide that they would rather go up and build a web, and so they'll end up learning flask for example, or they want to We want to implement a programme that interacts with the webcam and so the old go off and learn in open cv, for example. So I think one of the nice things is that students can take what they are interested in and really pursue the pieces of programming that are going to be relevant to those interests, and I think that when we talk about computing, we want people to see how ideas from computer science and from suffer engineering can be readily
to whatever discipline you're working in That's a really nice way to do that. I would say that the cons doing things that way are that there are some times students who will go through and they walk, I wouldn't say that they don't it specific ideas, but they may not recognizes as that, because we don't formerly teach it that way rights over. Apple. Sorting, algorithms, I think, is a really good example of that, where they might not know. Oh, this is what a quick sort is versus merge sort, but they understand the principles behind them. Is we're focusing on sort of learning how to learn, and so we can have equip them with the skills. go out and find those things if they need to, but we're not having them like traced through those different, sorting, algorithms on the board. The class for tat. Just out of curiosity, is there like an empirical foundation to the decision to teach this waiver It is perhaps more traditional one. Do you find that you know this? Gives students
They need to succeed when they enter the job market place. Or is this more like? You know, a philosophy of a certain kind of you, no education and a approach that just was developed uniquely at I would say that, for my knowledge of own history, we have very much been a project base schools, pretty much its founding in all is not at all. It's only about twenty years old button we have often focused on in all aspects of this is not just in the competing gherkin. This is in all of our courses. We tend to be fairly project based, and I think that is a big part of these sort of owen culture, the and educational culture. There has been lots of research to show that this can be effective in certain ways. I would say that specifically within the computing space. There seems to be so evidence that it is useful, but it is not clear. The extent of that I know
A lot of that work has looked at things like through self reported surveys serving people feel like they know more or people the likely, no, the things that are relevant to them? I dont know if too much work, that actor shows that that is case in looking at the software design course and say you have a bigger emphasis on code quality casting documentation. That definitely feels like a difference than what I experienced. Can you talk about the thinking behind that and how that shakes out in practice sure at least the teaching perspective. One of the things that I found when I came here was that there was a lot of students struggling to do things like these bees, larger projects and part of that war. because when you first during with with programming, you dont have all of the skills that you need to do a good job debugging or to really think about what your code is doing, and I think that in part
the emphasis that we put on writing your own tests and documenting your functions in a very deep, the way essential- forces you to engage with those ideas before your project gets too large, and I think that that can be really helpful because it's also a habit that you can continue to use in later courses with seen ways in which you know I mean I'm sure that we have all written code and then come back to it like a few, months later and like had to kind of page everything back in and remember what that code was doing or what the specific and behaviour of a It might be so we really tried to emphasise thinking about that making short a document that we encourage our students to think about the fact that your software may outlive you in other people, are going to be engaging with code, that other person might be you six months into the future, but because you want to make sure that you can continue to engage with a code with fairly minimal over We try to build up a habit early and I think that that has paid off somewhat recently. I had a professor come to me and say, like I can tell
of your students have taken software design or which are my students have taken software design, because I can see that there's a very noticeable difference in code quality, and I will mentioned in my capstone project a bunch of my teammates, which is like a team of four working on a year long project. It's very clear that the people in my group have focused on code quality. We spent a lot of time writing tests for a python package. We're writing. It's got like one hundred per cent code coverage and we're being very meticulous about these details to make it readable. I would say it's definitely helpful to be able to learn these things early so that it's not as much of a surprise in an internship or in a job when these things tend to be a decent percentage of the development time he'll, like an incredibly practical approach, that this is the way things probably should be taught were like the theoretical stuff is important, but it's nice to know that this practical way of building an and learning
to your interests and and following best practices. Has it been something where it has reflected well for students generally in job placement and interviews where there's still able to do the white boarding interviews and and those cuts in gross things that still stick around. I would say that I generally feel prepared for job interviews etc when it comes to like knowing this offer, it's like you get a general conceptualisation of how code works as long as you, I guess, take the general algorithm course to know how to, for example, solve some of the interview problems. It's like you're familiar enough with code to be able to jump right in, and there is a minimal hesitation, for example, for writing the functions, the loops, etc. Whatever needs to take place, because this is it.
It's sort of a different way of approaching a college curriculum. What are the the issues you run into? What are the the new problems you had to solve and I think for me one of the major challenges, I have encountered in my in my past few years of teaching is that I've had to create a lot of them in tears myself. I can adapt to some extent existing materials. I, but I often find that you know if I want to do things like model good code quality in solutions like there's a lot of the work that I might need to do to adapt in existing solution. So I probably spent quite a bit of time doing that or sometimes I find that you know a book will explain this concept in a way that is in a very common in the way that I learned it, but it makes a little hard for students to connected with reality. So you know I I can think. Off the top. My had one example, I think, is that oftentimes when you learn something like class inheritance oftentimes, though the example that brought up is like you, have an option:
base class, which is usually like a sheep or an animal, and then you have like specific instances of that, and I think that can be in some ways helpful to to grasp the sort of general idea of what inheritance is. But it's not a piece of software that I can imagine a person in practice, so typically the way that that we trillion, Is that a special, because a lot of our students choose to do games as their final project as we actually introduce that as a game design. So we might introduce a class that is like a sprite or a or or a character that has a set of stats and then they might have certain characters might have specialized stats, but that tank that type of application is sort of much closer to what we might find in reality, but certainly creating those can can sometimes be a lot of work traditionally. Being a teaching assistant means that you have to do a lot more on the fly, since it's not just about knowing the answers to questions that are in a given problem set or knowing a specific set of curriculum. Like sometimes someone will ask me a question about how to debug something in javascript
then, for a project that they're trying to create, and in a few minutes later someone is asking me about docker or it'll use lambda, and it might be something that I've never seen before. I have to teach myself a little bit and then I'll be able to help them out. It's exciting work, but it's it's. Definitely not your typical class, We talked to one of our million rep users, who basically use stack overflow, like that they answered a lot of questions in order to learn about specific software yeah. What is this get thing I gotta get from here is like the number one answer giver earner on the subject or whenever it was so it is a question for both of you to what degree He did stack overflow play a role in education or the task didn't learner or, as a teacher, how do you feel about? you know, it's used by folks to ask an answer:
patients, but also you know, sometimes to copy and paste kurd like. Where do you see it fitting in for better or worse? I think that stack overflow. Maybe this is just the way I do it. It's like the baseline documentation for software It is that software doesn't have good documentation, especially like if it's a very small package or something that is hard to use like pandas. Sometimes the tents you want a pretty popular ones, it's useful to be able to go to stack overflow for those use cases and then also for trying something completely new. For example, I was making a tool for a webcam in bash and I needed to know how to use ff and take turns.
it can do anything, a hint of powerful but also but those arguments. So it was nice to be able to use that, but it's also been away for me to like practice, things that I already know so like I'll answer, questions on stack overflow. Now, in fact, once one of my friends actually written into my answer nays one of their questions, which isn't amazing, really and I guess for my from my perspective- I mean personally- I you stack overflow priests pretty much every day, but when When I use in teaching, I actually find that it's a really good way to engage with the idea of basically like how to ask questions and how to read the answers to those questions, so oftentimes. I use stack overflow like posts to teach students. How to ask questions. I can you create a minimal working example of the problem that you're trying to solve. Can you really clearly articulate with the problem that you're trying to solve is where you might be stuck? You know to resign textual eyes that question and I
oftentimes in class will rely on life programming so often times. I may have a problem that I have posed for myself, but I actually haven't written a solution because that actually modeling, that process of like hey. This doesn't work and I can't remember what this specific command is like. Let me go and search for. I do this and oftentimes. I will pull up a stack, overflow, post and sometimes I'll talk through like ok. This might be. This response was accepted, but it's actually not quite but- and here are the reasons why, like I think, learning do that is a really valuable skill is a programmer and it's something that I think can really only be taught by watching people go through that were by going through it yourself. So I find it as a really valuable, tool for teaching? I also find it really valuable for myself, because oftentimes there are some things that are not documented in. You just need to be going I remember personally like someone I was having some with it, like my team ox configuration file, and I like I spend a lot of time
to come up with a good minimal working example for this, and I asked this question and then I got a response from the maintainer of team ox who actually explained I hate this is very specific behaviour. This is, why is doing the thing that its doing that was just super helpful, so I a supervise jealous of of your learning the code with stack overflow occur at your fingertips. and I have one more question to ask: what have you been doing with the latest wave of may. I what's your experience asking in our code in question to catch you pity, verses, ask and stack overflow. How do you think you know this new, a models which are quite good, sometimes at providing code. Debugging co talk about her. Where rolled you think they'll play in toward the educational experience you ve been working on. So personally, I actually haven't used catchy britannia, my very much part of the reason for that is actually like I'm trained in Cyprus, gideon privacy trade. fairly menacing on his hand, I remember when I try to use it actually had like we had a talk here where, where part of it was about
Note some the ethics of I and we in there was a sort of like interactive. exercise that was, I can't use, tragedy, bt and find the stuff, and I went to go do it and it was like you need to give us a phone number, and I said: ok, I have this, like you know, like google voice number that I can sort of just provided and then does it know you you but you have to give us a real phone number and I thought at that. like. No, no, I'm not gonna do that. So I wanted to set out sesar. I followed along with someone who is sitting next to me ever because then I and actually used at much myself, but I've seen students use it inclined we can do a lot of really cool things and for me I ended up mindset. trade like I gave, students and exercise to put together like configuration file foresee make, and they are during a shaggy between spit out, more or less a perfect configuration is a fairly simple project and that I was a girl. That's really call that shit. She beat you can do that, but For me, I try to format at least exercise then project in a way that you really have to demonstrate understanding. It's not just about getting the code to work and in general my assignments tend to be like
agnes is usually only about half of the points. Did you, he's good style, did you actually think through the idea to engage with the ideas? Those are to be much more important, so I think cuba is a useful tool for helping you turn. his ideas into code. But for me I I do try to focus much more on the on the ideas more than the code in the last couple of months, I've explored chat, gypsy mostly for fun, just to see our, how powerful is it? What can it really do? Like? I made a prank website for one of my friends with all the code being generated on chat. If you tear fact, I was like wow, it can actually like create canvas elements in javascript and upload photos or do image, processing, create forms, etc. I'm sure
you're a lot more than my silly use cases, but for now it was just out of personal interest right, but you're not you're, not too worried about competing with it for a job after you matriculate this fall. I haven't thought about that too hard, yet I think I think it's going to be a long time before we have to really worry about our jobs knock on wood, but who knows you're going to be laughing at me next year, but we'll see all right everybody. It is that time of the show we gotta shuddered somebody who came on stack overflow and spread a little knowledge. Help to save a question from the dustbin of history. Awarded two days ago to first one. How do I get column? aims for a given my sequel table thanks. First one for popping end to give an answer: congrats near lifeboat badge you ve helped over thirty. Five thousand people So we really appreciate it. I am ban popper and the director of content here stack overflow. You can always find me on twitter up a pauper. Email asked with
questions or suggestions, its podcast at stack, overflow, dot com and I like to show why don't you do me a favor and leave us a rating and review it really helps. I am ryan Donovan. I edit the blog here at stack overflow, which you can find at stack. Overflow, dot blog and you can find me on twitter at I restore Donovan. I'm Cassidy. Williams, m c tio, a contender you can find me at castle- do css Id o o on most things. I'm Andrew I'm a student at all, and you can find me on guitar that intermezzo that I n t e r m e Zz. I o check out any of my projects that you find interesting, Steve, Matsumoto assistant, professor of computer, science and engineering at one college. You can find me on git hub at cyclops Swine see, l, o p s. You can also email me at s, Matsumoto m and eighty as you m o deal at owen dot either you or you can visit my website, Steve Martin,
well dot net. If you want to learn more about the software design class, you can visit soft DES s, o f t d e s, dot all dot e d. U I will thanks you both. Coming on pressure. The conversation and everybody extra, lessening we'll talk decent die. The.
Transcript generated on 2023-05-28.