Episode 4: Suzanne Matthews, Tia Newhall and Kevin C. Webb on Diving Into Open Interactive Textbook Publishing

The textbook has long been a mainstay of education. Although online textbooks can provide students with easy (and sometimes free) access to increasingly interactive resources, authors have a bewildering array of tools and publishing models to select from. Software such as asciidoctor.org, bookdown.org, leanpub.com, pretextbook.org, quarto.org, rephactor.com, runestone.academy, zybooks.com, and many others allow instructors to publish course material freed from the constraints of printed paper, cumbersome Learning Management Systems (LMSs) and Monolithic Massive Open Online Courses (MOOCs). In episode 4 of our podcast we spoke to Suzanne Matthews, Tia Newhall and Kevin C. Webb from Swarthmore College, Pennsylvania and the United States Military Academy at westpoint.edu, New York to discuss diveintosytems.org. We talked about their paper describing their textbook Dive Into Systems an open interactive undergraduate textbook on computer systems.

This paper presents our experiences, motivations, and goals for developing Dive into Systems, a new, free, online textbook that introduces computer systems, computer organisation, and parallel computing. Our book’s topic coverage is designed to give readers a gentle and broad introduction to these important topics. It teaches the fundamentals of computer systems and architecture, introduces skills for writing efficient programs, and provides necessary background to prepare students for advanced study in computer systems topics. Our book assumes only a CS1 background of the reader and is designed to be useful to a range of courses as a primary textbook for courses that introduce computer systems topics or as an auxiliary textbook to provide systems background in other courses. Results of an evaluation from students and faculty at 18 institutions who used a beta release of our book show overwhelmingly strong support for its coverage of computer systems topics, its readability, and its availability. Chapters are reviewed and edited by external volunteers from the CS education community. Their feedback, as well as that of student and faculty users, is continuously incorporated into its online content at diveintosystems.org/book

Full transript and selected references below, cite this episode using DOI:10.59350/shk5w-r7n33

Figure 1: This podcast features (from left to right) Suzanne Matthews, westpoint.edu/suzanne-j-matthews Tia Newhall cs.swarthmore.edu/~newhall and Kevin C. Webb cs.swarthmore.edu/~kwebb. Pictures reproduced with permission of the authors. Unfortunately the fourth person in this montage died before this episode was recorded, RIP Joseph Ducreux (1735-1802) en.wikipedia.org/wiki/Joseph_Ducreux

References

  1. Listen at pod.co/the-rest-is-teaching/suzanne-matthews-tia-newhall-and-kevin-c-webb
  2. Suzanne J. Matthews, Tia Newhall and Kevin C. Webb (2021) Dive into Systems: A Free, Online Textbook for Introducing Computer Systems SIGCSE ’21: Proceedings of the 52nd ACM Technical Symposium on Computer Science Education, Pages 1110–1116 DOI: 10.1145/3408877.3432514
  3. This paper was discussed at journal club meeting № 36, see DOI:10.59350/sigcse.2055

Episode Transcript, Machine Generated

⚠️ DISCLAIMER: Please note this transcript has been generated using speech-to-text software. It contains transcription errors and speech disfluency. ⚠️

Duncan : [00:00:00] Hello and welcome to the Rest is Teaching podcast for computing education researchers and practitioners. In this podcast, we’ll meet people who are changing the way that we teach computing from school through to university and beyond. What is computer science anyway? Why should people learn it and how can we improve the way that it’s taught?

My name is Duncan. I’m your host, and we’ll be meeting authors of studies and papers that tackle these important issues from our journal club. What is their practice and research? Why is it important, and how can their insights be useful to other people teaching computing in any area of education and at any level?

My guests today are Suzanne Matthews, Tia Newhall, and Kevin Webb from Swarthmore College in Pennsylvania. The United States Military Academy at West Point, we talked about their paper Dive Into Systems, a free online textbook for introducing computer systems that was published in 60 20 21, proceedings of the 52nd, a CM Technical Symposium on Computer [00:01:00] science education.

Thank you Suzanne, Tia and Kevin for joining us today. Could we start with just a few introductions to say who you are? So let’s start with you, Suzanne. 

Suzanne : Okay, so I am Suzanne Matthews. I’m an Associate Professor (now full Professor) at WestPoint.edu. 

Tia: Hi, I am Tia Newhall. I am a professor at Swarthmore College.

Duncan : Last but not  least, Kevin?

Kevin: Hi, Kevin Webb. I teach computer science at Swarthmore College.

Duncan: So thank you for joining us today. So this podcast is a follow on from our journal club meeting that you came to recently earlier this month where we were discussing your textbook you’re writing called Dive Into Systems.

So, could you explain, firstly, what, what the book and the paper which describes it is, is [00:02:00] about in a nutshell? Sure. So dive Into Systems is basically an introductory textbook that introduces, um, students with a CS one background to computer systems topics. Um, our paper that we wrote in 2021 was about, um, our experiences writing the textbook and running an early adopter program in which.

Faculty around the United States actually used the textbook as a required course, um, in one of their computer systems courses. And just a summary of our experiences. Right. Okay. And, um, why, why did you write the book? Why did you write the book in the first place? I think I could say the reason we wrote the book, um, there were two reasons.

One. We couldn’t find a book that quite matched what we wanted to teach in our courses. So I was using multiple textbooks and I met, uh, Tia, and Tia [00:03:00] introduced me to Kevin and we were all griping on how we were trying to find this perfect textbook that did not seem to exist for our course. Um, and so we decided to just write it.

Uh, but we also wanted to write something that was widely. Applicable to a whole range of courses and something we wanted to actually give away free to the community. Um, because we have a lot of, um, students who come from a variety of backgrounds and textbooks are so expensive. So we wanted to make something that would really make this material affordable to a wide range of students.

Right. Okay. And, um, so you, you talk about the student audience there who, so who’s primarily the. Intended audience for this, this textbook. Uh, Tia, do you wanna take that? Sure. 

Suzanne: I think we see two uses, two primary uses of our textbook. Um, the first is for, uh. [00:04:00] As kind of a primary textbook for these introductory sequence courses.

So courses that first introduce students to systems, topics, uh, computer organization, parallel computing. And that, that assume that students have only had maybe a CS one background. And that’s really how we’ve written a book. We’ve written a book to that audience. Um, at our two institutions, we, we have slightly different courses and we use different material from the book.

Um, so how an individual instructor might use this book for their course may vary a lot. And we’ve, we’ve worked hard to make. The chapters, um, have minimal dependencies so that instructors can kind of mix and match content to fit their particular course in this sequence. This the secondary way we see using this is as a supplemental textbook [00:05:00] to provide background information in.

Architecture systems. C programming, parallel computing, um, assembly programming to support, uh, co courses, upper level courses like operating systems, architecture, networking. So these, these courses may have a, another required primary textbook, but then our textbook could provide this background information that’s necessary for students going to the, to these courses.

Duncan : So you are a kind of bridge between CS one, which is a sort of introductory computer science course through to, I mean, obviously a, a, a subject in its own right. Uh, systems, but also then a bridge to perhaps students who are thinking about taking more courses in this kind of space. 

Suzanne: Yeah. So I think we’re.

We’re seeing our, our institutions are doing this and we know that, um, several, lots of our peer institutions are expanding what was more [00:06:00] traditionally a computer organization course that may have just focused primarily on assembly programming. Um. Maybe a little bit of architecture and they’re really expanding the coverage of systems and, and trying to introduce parallel computing earlier in the curriculum.

And so. Our, our book is kind of covering a broad range of these topics, but not in great depth. We are not a, we are not a textbook for an upper level operating systems course. We don’t go into that amount of depth in our operating systems chapter, for example, but we provide kind of a, a broad overview of, of operating systems and, you know, ex express what.

Define what an operating system’s role is in running a program and some main abstractions for it. And for a student may be entering an upper, upper level operating [00:07:00] systems course. Our, our chapter might provide an easier entry to some of this material that they’re gonna see more in depth if they haven’t seen it before.

Duncan : Yeah. Okay, good. So, um, you, you talked a little bit in the, in the journal club we had about some kind of big design decisions you made in, in how you got went about writing this book. Could you describe some of the kind of, um, what those decisions were and why, why they, why you think they’re important?

Sure. So, I mean, I think the first big decision we made was to make the book online. And making a book online has so many advantages. One, because it is, um, uh. Sorry, uh, because it is, uh, you know, freely available, it is searchable. Um, that is something that we thought a lot of students would find useful. Um, lots of students don’t really [00:08:00] have the patience, I think, to read textbooks linearly the way that many of us grew up teaching.

Or, or reading textbooks. Um, so the ability to quickly type in search keywords and go to particular sections and jump around, I think is something that the online format really gave us. Um, and also because it is free, um, it was also serendipitous that we started our book project a couple years or a year before COVID started because when.

The COVID pandemic hit, um, a lot of people were forced to start looking for online options for their textbooks and such, and so we were lucky in that our book was already online. Um, so it didn’t really impact our courses as badly as it could have, um, compared to, you know, if we had been using a traditional textbook.

Um, so that was the first big decision. The second one was, um. Uh, that we wanted to make [00:09:00] sure that the, there weren’t that many dependencies between the chapters. Uh, so we, as Tia mentioned, we use the book differently at our own institutions based on the prereqs and the requirements that we have for individual courses, and we have people at other institutions who use the book.

Differently. So we wanted to make sure that people could, um, or faculty could really pick and choose what content they wanted to cover in their courses without saying, oh, now I have to make sure the students also read these set of chapters as. You know, in order to prepare them to learn this material. So to really reduce or eliminate as many of the dependencies as we could was a key decision point in how we wrote the book.

Um, I would say I. The last one though would have been, uh, creating a print version of the textbook. And so that took a, uh, considerable amount of time finding a [00:10:00] publisher who was very open to the idea of having a book that was free and online available, and who shared our commitment to free online textbooks.

Um. But also was also committed to ensuring that our print version was consistent with our online version and would be for the foreseeable future. So, um, that took a lot of effort, um, but I think the final result is turned out pretty well. Good. Okay. Um, you, so you mentioned there that, um, obviously lots of different, um, colleges across the US and universities are, are using it so.

I think, is it right, it’s about 20, 20 different institutions, or is it more than that now? It’s closer to 50 now, believe closer than 50. Okay. I didn’t count very accurately. I sort of quickly eyeballed the page. So you’ve got, I mean, that’s, it’s got a, a wide range of adopters, which is good. I wondered if you’d looked at how the book was being used outside of the US ’cause kind of, you know, architecture is architecture [00:11:00] everywhere.

We’re all using the same CPUs at the end of the day. Uh, so do you have any thoughts on how the book is being used outside of, outside of the us? Um, Kevin, do you wanna go for this one? Sure. Yeah. So, uh, we occasionally get emails from people out of the blue telling us, Hey, we’re using the book now, or we’re evaluating it and we’re planning to use it.

Or, you know, it’s, it’s always nice to get those emails. Um, and then we’ve gotten at least one from someone, I think in the uk. Is that right? Suzanne. Yeah, so we’ve gotten one, um, that we know of, but we suspect that there are probably more out there who just haven’t told us. We ask people to let us know if they’re using it, but of course they could easily do that without telling us.

Um, we also. No, based on some of the statements that we get from our publisher, no starch press that at least two foreign publishers have purchased the, like, local distribution rights in their area. Um, one of ’em is for sure South Korea, and I think the other one is China. I’d have to double check on that.

But, [00:12:00] um, so we know that somebody is doing it, using it for something in, in those countries, but, um, we don’t have a lot of visibility into the details of what that looks like. And I suppose, um, you can see a little bit from online tracking, online usage of seeing what, where your readers are coming from. Is that, is that something gives you any insight into where the, some of the readers are?

Yeah, we looked at that, uh, yesterday with the, the Google Analytics that we’re using. Um, it was, I think what it was like 50% US or something like that. 64%. 60%, yeah. So it was, you know, majority as you would expect was, um, you know, American. Institutions or, or students. But, um, it was a pretty good number from a wide variety of places.

There wasn’t any one country that was like vastly overrepresented over overrepresented compared to all the others. Um, you know, I think there were a number in China, India, um, Canada, UK were all, um, you know, among the, the top ones that were outside of the us. Good. But I don’t have exact numbers for you off [00:13:00] the top of my head.

Yeah, yeah. No, it’s, it’s good to get a sense. Good to get a sense of that. So, um, one thing we discussed earlier was that writing, writing a book obviously takes a long time. So one of the, one of the questions that people were asking is, how on earth did you find the time to write it? When you are busy doing teaching and research, I’ll let Tia talk about this.

Suzanne: Well, I. Um, I think we really lucked out in that our sabbaticals were perfectly aligned to help us make a lot of progress on writing the book. And, and I should say that we started out with the online version. We, we hadn’t, we initially were just thinking about that version before the print version, but I was on sabbatical first, and so I started writing some of the, the first few chapters and then.

Suzanne, were you on sabbatical next? 

Duncan : Yeah, 

Suzanne: I was on sabbatical, yes. Suzanne was, and then, so she, you know, we, she made a lot of progress on the chapter she [00:14:00] wrote, and then Kevin was on sabbatical and he made a lot of progress on, uh, the chapters he wrote. I, I think without the, you know, without that happening, it certainly would’ve taken us longer to do.

I mean, it’s, it, it was a lot of work, but we were very motivated to do this. This was, you know, part of our initial motivation was purely selfish. We wanted this resource for our own use. Um, so there was a lot of motivation to get this together so that we could use this in our classes. 

Duncan : Yeah. Yeah. Okay, good.

Um, I also think that since we got, um, a bunch of community feedback since, um, as we were writing chapters, we were going out to faculty and saying, Hey, what do you think of this? And they were just like, oh my God, this is really valuable. Can you make sure you cover this and this and this? And. When we started to see that there was such a huge interest in having this book, um, I think that also was a bit of extra [00:15:00] motivation because we knew we were creating something that was actually value valuable for the community.

And so we wanted to, uh, do a good job and release this so that everybody could use it. Yeah. And I suppose it’s kind, it’s a bit like publishing open source software in a way, isn’t it? You get feedback from your community continuously, um, rather than when it’s finished. ’cause it’s kind of, in a way it’s never finished, is it?

But um, you’re getting that feedback all the time from, uh, people that are users, people who are using it. Um, one thing you touched on earlier was, um, why have a printed book? So, um, you mentioned there’s this kind of, in, in your user surveys you discovered there was this small but vocal minority of people who.

Who, who really wanted a printed book. So could you talk about some of the reasons, some of the benefits of, obviously the digital book has lots of advantages. Um, could you talk about the reasons for also creating a, uh, traditional, um, printed book? Sure. Um, so [00:16:00] I was very surprised. So we had sent out these surveys to these students and these faculty, and I thought, oh, it’s online.

It’s searchable. This is great. Why would we ever need a printed book? We don’t even need anything like that. And uh, there was this vocal minority that was just like. Oh, I really want a printed book. And you know, when we think about it, um, it makes sense because there’s only, there’s only so much time you can spend actually staring at a computer screen before your eyes just get tired.

And frankly, if there’s a book I like, I always buy a print copy. ’cause I just love the feeling of paper between my fingers and I. Prefer browsing books, um, in print form. So, um, that was one reason that, uh, we, we created this print edition because we, we recognized that there were people who just read the content better in a physical copy.

So that was a big thing. Um, another reason we did it when we decided we were going to do it, there was a question [00:17:00] about self-publishing versus going with a, um, reputable publisher. And I think that if we didn’t find a publisher who had gone with our, you know, our idea of actually making sure that the book stayed online and it stayed consistent, um, we would’ve self-published.

But, um, I think especially, um, since. At the time that, um, we were working on this, TIA is a, you know, a full professor. Uh, Kevin and I, uh, were both associate professors, so at least two of us, you know, we, there is still another promotion that we have to think about and, uh, you know, uh. Traditional, uh, promotion boards at the college and university level.

This whole notion of a free online textbook, it’s beyond novel. Um, in that, uh, beyond. Beyond what, sorry? Beyond novel. Right. Okay. Yeah. Yeah. It’s kinda interesting ’cause we, the web’s been around for a long time and yet [00:18:00] it’s, you still think you anything on the web, right? Like, just because it’s on the internet doesn’t mean that it’s of any good quality.

Yeah. So what is the difference between a textbook that is actually endorsed by a well-known computing publisher versus like a medium blog post? Right. I mean, there’s a world of difference between the two. Um, and so. When you’re trying to communicate to these promotion boards that, Hey, look, I did something significant and it wasn’t just a, you know, at the time, sink for me.

But it’s something that the community finds valuable and that, you know, the, uh, that people think is actually a good product. It’s a lot easier to convince people of that if you have a reputable publisher who’s backing the product versus something that is just self-published and fully online. Yeah. Yeah.

And, uh. The, the last thing I will say about that is I don’t think I fully understand or understood how [00:19:00] big our book was until I saw it in print. Um, it was a sizable book because we just wrote until we felt like we gave the, uh, sufficient amount of coverage to the different topics that we covered. We really weren’t looking at things like page count.

That was not something we, uh, cared about. And then when it finally got printed, it’s over 800 pages. And so that is actually seeing a physical book that is 800 pages long. Um, that also is another way of communicating to these, uh, promotion boards that, you know, uh, this was a sizable contribution. The other thing there is like communicating to students how much, how much content there is.

It’s quite, you can see the, the width of the book. It gives you an idea of, of, uh, you, you don’t get that sense online, do you? Of how, how much there is in the same way? Yeah. I mean, personally I prefer the online version for that because, um, I think the students who’ve seen the print edition just get a bit [00:20:00] intimidated by looking at it like, oh God, are we really gonna read all this?

Well, when it’s online, oh, I’m just gonna, this page next, you know. Yeah. Yeah. True. Okay, good. So that, that’s some, some introductory, we’ll come back a little bit to talk about book publishing. And one thing I wanted to move on to was, um, talking about the, the system stuff. So it’s a, it’s a book about operating systems and parallel programming.

So you’ve got code in the book and it’d be good to talk about how some of that works on a, on a, uh, some of the technicalities. So. Um, you have a lot of the, I think all of the code for the book is in C so how are Stu students are able to execute and run c code in their browser in the, in the textbook? Is that, is that correct?

Uh, currently, no. So our book is free and it’s online, but it’s not interactive in the way where you can run a code snippet in the browser. However, we just, um, won a, um, NSF.gov grant, a [00:21:00] National Science Foundation grant just a year or so ago where we are, um, going to incrementally add interactive content in the forms of videos and exercises to revoke.

And so that’s one of the main efforts that we’re doing right now. So I’m gonna let either t or Kevin take this. ’cause I feel like I’ve been talking a lot.

All right, I’ll, I’ll jump in. Yeah. So I, I think most of the examples in the book are in c We do have three assembly chapters that cover three different assembly languages. So those obviously mostly cover those specific assembly languages. But outside of that, um, we have a lot of examples that are in c.

And we talk in, in the early sections of the book about, you know, the environment that we’re assuming, which is largely like your typical sort of canoe Linux. Um, I think Ubuntu is the, uh, example that we use, although I think mostly these examples would work on any sort of, you know, modern Linux distribution.

Um, so we, you know, we talk about G new tools, [00:22:00] G-C-C-G-D-B, um, rin, things like that. So, um, a lot of the examples that we use are some things that students could, you know, download. We, we often make, you know, the dot c files or dot assembly files, uh, available as links that they can download directly versus having to like copy and paste it or type it in or anything like that.

So we require them to have some sort of environment that that somewhat matches ours. But any sort of standard Linux installation, whether that’s on an X86 machine or an arm, you know, raspberry pi, whatever should, should work. Right. Okay, good. And you can also, I think you mentioned you were also looking at having some of that assembly language would also then work potentially in a browser as well.

Is that right? Yeah. So as, as part of this effort that we’re working on now to add these interactive tools, um, so there are some existing tools that will already allow you to. Essentially the, the student would type in C code in a, you know, a box and click go and it would farm it out to a, a server somewhere on the backend that would execute it and run it.

[00:23:00] So those sorts of tools already exist and we are, uh, adopting some of those and adapting them for our purposes. Um, and we’ve built something similar. For assembly language. It’s, it’s in a prototype stage now. It’s, it’s usable. We’ve demoed it in, in our courses that, that we teach, but we haven’t released it to the outside world yet.

We still need to put some polish on it. But, um, you know, it’s, it’s sort of like Python tutor if you’ve ever used that, where you can type in code and then sort of watch it execute. Um, it does that but for assembly language. So it’ll show you the state of the stack, the state of the registers, and then which instruction you’re on, and then you can move.

Backwards and forwards through the execution stream of instructions and see how the state of the machine changes and responds to each one. Yeah. Okay. So, um, talking about the state of the machine, this is really a point of clarification. So one of the questions that come up was people got very excited about, uh, a bare metal programming in terms of sort of, uh, interacting with the CPU without an operating system.

Could you say a little bit about, um, [00:24:00] uh, where this book sits and in relation to embedded systems? Rather than operating systems? 

Suzanne: Um, sure. So I mean, we, our book defines the computer system as an operating system architecture layer together. So we’re, we’re not. Um, addressing bare metal programming in our book.

Um, I think if we think about maybe a, a course that might do teach embedded systems, I think this is where our book fits in the secondary role, where it can provide background in assembly and architecture topics. To a course that’s really focusing on bare metal programming, maybe embedded systems. Um, but it’s not, it’s not something that we’re explicitly doing in the book.

I mean, we certainly talk about, um, assembly programming and uh, uh. [00:25:00] So I don’t know if that answers your question. 

Duncan : Yeah, yeah. No, that does. It was just a point of clarification ’cause it, it came thing So, um, the other thing you mentioned in the journal code was, um, code lens. Is that right? I think you were using for code tracing.

Was that right? So I think that, um, ties into what Kevin was talking about earlier in terms of the, the new effort and some of the technologies that we are developing. So, um, our new exercise booklet that is going to be interactive is built on top of the Rone Stone framework, which is another, um, prior NSF funded project.

And as part of Runestone there is a feature called Code Lens, which allows you to visualize and. Interactively like Python tutor, right? In fact, it’s Python tutor. So it basically allows you to, um, you know, automatically submit a piece of code to Python tutor and then visualize its execution without actually.

Externally visiting the Python tutor website. So, um, that is called Code [00:26:00] Blends. And so we are, as part of this new effort, actually going to augment the code lens feature with our new tool that Kevin was describing. So that way, in addition to visualizing how a C program might execute at the code level, you’ll actually get to see how that.

Um, an assembly program would execute at the instruction level. Right. So I guess that, is that something that Python tutor doesn’t? I think Python tutor does do C at the moment. Does it? But it doesn’t. Oh, it does. Yes. So Python Tutor does c it does Python. It does a whole, um, slew of languages, uh, but it doesn’t do assembly.

So that’s one of the novelties of the new tool that we are creating. Right. Okay, now I, and I understand that better now. Um, so the, another one of the things we talked about in, uh, was, uh, performance. So, um, could you say a little bit about how you get students to, when you’re teaching systems, you’re often wanting to look at performance, whether it’s runtime or power consumption or memory usage.

You say a little bit about [00:27:00] how, how you encourage students or how thinking about performance is a part of this, this textbook. Sure. So most of our students who are taking this course, this is usually the third course in the computer science major that they’ve taken. So they’re still very much, uh, beginning students.

Um, and I think most of the things that they have encountered so far when they think about performance, it’s all very, you know, CPU bound, um, in terms of, oh, okay, I have this algorithm. How can I make it more efficient by decreasing the number of operations that, uh, the algorithm is doing, right? And so they learn a little bit about order notation and order analysis and you know, those basics.

However, when we actually take a look at, you know, the factors that go into determining. How a modern program actually executes and how well it works. We’re not just concerned about the CPU anymore. We’re also concerned about [00:28:00] the memory consumption. Uh, we are also concerned potentially about how much power, uh, that process might be, um, taking up on a particular.

Um, device. So we don’t cover all of those things in our textbook, but we do want our students to be aware of these issues and to pique their interest because I know for some of us, um, our students do go on to do research with us in, uh, future years. So we just want them to be aware of the tools and the issues.

To give you a practical example, um, in our, um, memory hierarchy chapter, we actually take a look at. Two ways of summing a matrix. One is in RO major order and the other one is in column major order. So both of the number of operations are identical in those two, uh, implementations. However, the RO major order, uh, implementation is like an order of magnitude faster.

So for students who are used to only the [00:29:00] standard, oh, well, it’s the number of operations that really determine how fast a, uh. A, uh, a program is going to execute. This is like what, this is so confusing to them because both versions take exactly the same amount of, uh, operations. It’s just that one is using.

Accessing memory in a fundamentally different way than the other. And so this is really a way of motivating the principle of locality and how important spatial locality is. And so we also, in that same chapter, show them how to use profiling tools like, um, Val Grants Cash Grant to actually see how cash misses.

We can see that, uh, how, um. The program with poorer spatial locality has a greater percentage of cash misses. And so by teaching them these profiling tools, making them actually think beyond, uh, you know, what they are already comfortable with in terms of looking at the performance of their programs, um, that’s how [00:30:00] we, uh, encourage them to think about performance in a more holistic way.

Right. Okay, good. I mean, there’s other, it is not really performance, but, uh, another motivator. I know sometimes architecture can be quite dry and abstract. Um, and one of the ways to make it more concrete is to talk about security. So we, we talked about things like heart bleed and spectra and meltdown.

Could you say a little bit about how you use the vulnerabilities in, uh, in code to motivate some of the learning or some of the content? So within our textbook itself, we don’t really talk much about vulnerabilities, um, explicitly. We do have an entire section on buffer overflow, um, because in our assembly chapters we actually, uh, discuss how a buffer overflow attack.

And basically how, um, the reader as a programmer can defend themselves against buffer overflow attacks by making particular decisions in the way they code. Um, so that is the [00:31:00] extent of which we actually cover vulnerabilities in our book. However, I think in our individual classes we do talk about actual security issues that currently exist and how they relate to material in the book.

So heart bleed when we’re talking about a buffer, overrun errors, um, specter when we’re talking about speculative, um, execution. Um, and I’ve talked about go to Fail when I. Wanna talk about why they should use curly braces when they comment. And um, Kevin, do you cover any other security vulnerabilities in your course?

I know you mentioned that you do the same. Yeah, I, I, I usually bring them up, not in a depth technical way, but often I bring them up like on the first day of class and say things like, and, and the sort of foundations we’re gonna be learning in this course are gonna be what you will need in order to understand these things that.

You know, you’re hearing about in the news or, or whatever that, that might be. [00:32:00] Um, and then maybe on the last day I’ll talk a little bit about them, depending on how much time I have left. Um, but I think, you know, the way I see our book in this space is not like, it’s just beyond the scope of the book to talk about every individual, um, vulnerability or, you know, the, the latest speculative execution thing that happens to come up.

I mean, I. I want this book to get them to a place where they can understand those things and have the background to understand them. And I’ve had students who have taken, you know, the course that I teach, that uses this book and then immediately gone the next semester into like a directed reading where we read the Specter and meltdown papers and all that.

And students seem to be, you know, very well prepared for that. But, um, you know, the course that I teach at least, it just doesn’t have the time to, to dig into the details of these things in addition to all the other. Stuff that we, that we have to do, unfortunately. Right. Okay. So, um, moving on from the system stuff, back to back to the sort of book, book stuff again.

Um, [00:33:00] you, you, we talked a little bit about how you use, how is the book typically used, uh, to support teaching? I guess different people are using it in different ways, but what, what typical scenarios might, might how Use the book in. 

Suzanne: So, um, we’ve, we’ve purposefully designed the book, so that could be used in all kinds of different ways, right?

What, so, although our initial motivation was selfish, our very next motivation was altruistic, and we wanted to make sure that if we’re creating this resource, it’s useful for a lot of different uses for a lot of different courses. Um, so we. We don’t, we know a little bit about how it was used by, uh, um, our early adopters that we talk about.

So we ran an early adopter program, um, of eight, uh, 19 institutions participated, and most are using it in. And of courses that it’s particularly targeted for these, [00:34:00] um, computer organization and introduction to computer systems types courses right after C CS one. But, uh, individual schools are using those in different ways.

Our two, just our two schools teach courses like that and we use different chapters and we cover chapters in different order. So our book is really designed with minimal. Chapter dependencies to make that possible so that, you know, I think we start with, at Swarthmore, we start with the binary chapter, which I can’t remember off.

It’s not chapter one. Uh, Suzanne, what do you do? You start with chapter one. We start with chapter one. Yeah. So we go back to chapter one later. Um, and. You know, other institutions are doing similar things for how they’re using it. It, it really was one of the goals of our book to make it as useful as possible.

Duncan : Yeah. Okay, good. So, um, you, you’ve mentioned that you have this small but vocal [00:35:00] minority who wanted the printed version. Could you say a little bit about, I mean, we, we can’t probably talk, can’t talk absolute numbers, but roughly what your breakdown of, uh, users is. People who use the printed version versus the online version.

Sure. It’s, it’s hard to say with precision because our publisher only gives us statements every so often and, and we’re about to get a new one, but we haven’t gotten it quite yet. And the most recent one we had was from the end of 2022, but the book only came out in like mid-September 2022. So, um, you know, it’s unclear exactly how many students are, are really buying it versus just looking at the online version.

But we’ve seen about 34,000 unique users in the last 180 days to the online version of the book. So it’s got a pretty substantial number of people who are using it, at least, um, you know, during the, the active teaching semester, um, I think [00:36:00] it’s, it’s clear that more students are, are certainly using the free online version than they are the, the paper version.

I, I think it’s a non-trivial number who are buying the print and ebook copies, whether or not it’s the 20% who really clamored for the print copy back when we did those initial surveys. You know, I, I have my doubts, but, um, you know, I, I think it’s a substantial number that, that, that will end up buying a print copy, at least in some.

Okay, good. So one of the things you talked about in the next steps with the funding from the NSF was, um, um, adding interactivity through videos and interactive questions. So I think, uh, you’re using Rone Stone and that allows you to integrate your learning management system into, um, how students are, are using the book.

So you could, for example, you can see which, or you will be able to see which students have in your organization have. Attempted certain questions. Could you say a little bit about how Rone Stone works with, in collaboration with the [00:37:00] textbook? Sure. So I mean, Rone Stone is a general system that allows you to create, uh, like an interactive book or interactive content for a book.

Um, it supports a wide variety of question styles, so things like fill in the blank, multiple choice, um, Parsons problems, that kind of stuff. Um, it has a component called a room stone server that does allow you to do analytics or to, uh, associate, um, you know, your student accounts, essentially with which questions they’ve answered.

And it supports things like doing quizzes. That isn’t how we have at least initially thought about it. We’re right now mostly using room stone. Just to get the question formats. Um, and then we’re also extending it to add new sorts of question formats. So for example, rather than just taking fill in the blank, you know, we’re, um, adapting it to support, like, let’s suppose we have a cache table, um, and uh, or like a table that represents a cache and we want to have, you know, [00:38:00] a a, a stream of instructions that are gonna get executed or memory addresses that are gonna get referenced.

How would the. The contents of the cash table change as a result of, of that instruction stream. Um, and so we’re building some interactive tools to do things like that, and we’re also adding ways to, like auto generate new questions. Um, and so, you know, Runestone right now is just sort of the, the, the vehicle that allows us to integrate with.

An existing system that supports some of these questions and, and gives us a lot of the, the mechanisms that we need to, you know, extend it in order to support the, the specific sorts of questions that we want, um, for the book. So I, you know, it’s not directly integrated with like Blackboard or other sort of LS systems.

Um, I think it potentially could be, although what we’re mostly aiming for with our interactive stuff is not, uh, at least primarily. Tracking the students and, and, and their individual progress. But more so, um, giving us a sense of what students are using and what they aren’t [00:39:00] using. And, you know, giving us some sort of analytics for that in a more anonymous sort of way.

Um, and also just giving students a chance to practice things like we want them to be able to test their understanding. I mean, we all give out homework or things like that. And it’s not uncommon for students to come and say, Hey. I want more caching questions. ’cause I, I, I think I understand it, but I’m not sure yet.

Can you give me more? And I can only generate so many of those. But if we can give them the tools they need to autogenerate those questions, whether it be caching or learning number conversions or virtual memory or, you know, whatever the case may be, um, I think that gives them the confidence to essentially practice as, as much as they want.

Yeah. Okay. So the, the question, uh, the questions you’re working at the moment, I think you, you showed a demo where, um, are, are they gonna exist as a separate. So you’ll have the book and then you’ll have the questions separate or will they end up as part of, for example, uh, addition two of the book, the printed book.

So it’s, um, so the, the printed book is 800 pages, and so [00:40:00] we want to keep, uh, cost down because, um, it wasn’t, um, enough for us to have a print version of the book. We want it to be relatively inexpensive. Um, adding exercises to the print edition of the book would make the book. Book much, much longer and drive up the cost when we really don’t see much benefit of that since one of the advantages of the online format is that all of these questions can be, uh, run in the web and therefore students get immediate feedback.

So our book is organized in such a manner, so that right now the last section of every chapter. Is the exercises section. So if you go to the online section of the book, there’s usually like a, a, a section 1.8, which is exercises, and that section is not included in the textbook. So that way the section numbering still lines up since, um, if it’s the last section in the book, and if it’s [00:41:00] omitted in the print edition, that doesn’t mess up the, um, the, the section numbering.

At all. Yeah. Yeah. So this last section is going to be there in the online, and there’s going to be a series of links. Those links will then go to this Rone stone generated exercise booklet. So basically people will be using these hyperlinks to get from. Um, the current version of our book, which is Render Rendered in HTML, they click on it and they go to the room stone portal for the exercises.

Right. Okay. That makes sense. And I guess it’s, you kind of similar problem with videos ’cause you can’t obviously have a video embedded in a, in the paper book. So you, you just have links to videos that you’ll publish, uh, somewhere else, I guess. I, I think we’re still figuring out exactly where the videos are gonna go.

I imagine, um, we’ll put more interactive content in each section. So we might have a reference in the text saying, Hey, you can watch a video, and they [00:42:00] can click on a link and actually be able to see, um, the video. But our goal is to keep, uh, the text aspect to the book as separate from the interactive.

Content of the book. So that way when we do wanna create a version two of the the book, it’ll be very easy to ensure that the print edition is still in line with the online ’cause. That is definitely a challenge the moment you add interactivity. Yeah, I mean, it’s one thing you mentioned was it’s, I mean, could you say a little bit about why that was so difficult, keeping the print and online versions in sync with each other?

And how you go about managing, you know, version controlling multiple outputs with multiple contributors, where you’ve got the paper version and the online version. Sure. So the, the version controlling aspect wasn’t too difficult since we’re using get. So all of our, uh, all of our writing is a combination of something called ASCI Doc.

And so we have ASCI Doc [00:43:00] and a GI re repo. And so when the three of us are editing and we’re making changes, that is sufficient for us to ensure that we have good version control. Now, the publisher, one of the advantages of having a professional publisher is that you get the copy editing process. And so the publisher had.

Their version of the, um, the print edition of the book, which was in a completely different format. Um, and that comes with its own track changes mechanism. And so they have suggested changes. And part of the reason it took us a long time is as we were approving each of those changes, we would then have to make the equivalent change in our Askie doc version of the book.

So just going line by line and ensuring everything is consistent, that just takes a long time. Right. I can, I can understand the pain now. I guess part of the problem is that the publisher’s not using Git and asoc, they’re using something else, I guess. Exactly. Right. That, that makes sense now. Okay. [00:44:00] Um, I mean, you mentioned the sort of editorial, so you know, part the, the kudos of having the book is one factor.

You’ve got the copy editing and I guess a bit of editorial direction from your publisher. Um. What, besides these services, h was the marketing valuable in terms, or how, how valuable was the marketing in terms of saying, Hey, there’s this book called, uh, dive into systems and, uh, you know, uh, making, making it a, a thing that people know about.

How valuable was that to you in, in getting the word out about the book? 

Suzanne: I think it was helpful. I don’t know that we have a great sense of how helpful it was. 

Duncan : Yeah. 

Suzanne: We’re a bit unusual in the sense that we had a. We had a full book before we sought out a publisher. So our online book existed before the print version existed, and we already had a, a pretty large community of interested people in, you know, people using our book already.

And, [00:45:00] um, people interested in using our book, I, I’m, I’m sure it helped. Uh. 

Duncan : But it’s difficult to know how much, I guess it’s, yeah. It’s just 

Suzanne: hard to know. 

Duncan : Yeah. 

Suzanne: How did people come to our book? Did, was it through no starch press and their marketing, or was it through our presentations at six C and other places?

Duncan : Right. Okay, good. Alright. Um, I think that covers all of the questions I had about the, the book. Um, so to to to round up with, ’cause we’re coming up to time now. It’d be interesting, um, your thoughts on speculating where, where this is all going. So, uh, there are other books like this, uh, not, not so many, but, um.

For example, there’s um, three easy pieces, operating systems, and there’s, um, think Java, how to, how to think like a computer scientist, various other textbooks, whether undergraduate or not published in a similar sort of model to [00:46:00] you. Um, how do you see the future of that playing out in the future? Do you think publishers will be jumping on this and saying, this is a great idea, let’s do more of this, or, or do you think perhaps this is gonna be a, a, a slower, slower burn?

That is definitely an interesting question. Um, I think it’s going to be really interesting just to see what the future is going to hold. Um, my own personal sense is that we are going to see increased adoption and. Increased impetus to actually create these free online resources. Um, I think one thing I have observed over the last several years, especially in the United States, is that there is growing inequality in terms of, um, people’s ability to access, you know, affordable education, people’s ability to, um, really attend college.

Um, you know, things like that. And for. Many people, the [00:47:00] idea of actually learning some of these concepts like computer systems, computer programming, et cetera, it’s the gateway of getting a higher paying career than, um, you know, uh, they might feel like they could get otherwise. So if. That knowledge is locked behind, um, certain doors, and you have to go to a college necessarily to get that information.

Um, it makes it harder for people to mobilize upward. Um, and you know, there have been reports about, um, some of the studies we were looking at, um, where students are actually foregoing meals so that they can actually afford to pay for their textbooks, which is a horrifying thought. You know, I do think that, um, and especially in the wake of the pandemic, um, we saw another study that suggested that teaching has not gone back to the same level of in-person modality as it did pre [00:48:00] pandemic.

There’s still quite a bit of courses that are in this distance or hybrid format, so I think increasingly people are going to look. For, um, free online resources. Now the question is, is that if faculty, um, as the experts, if we are not motivated to create these high quality, you know, free online resources, the students are gonna try and get it somewhere else, you know, and those, uh, sources may not be high quality.

And I think overall, that’s going to make our lives as. Teachers and educators a lot harder because, uh, they, you know, seek out free things that are not good. So I think, um, we are going to see more people who will hopefully embrace this. Right. Good. Okay. Um, I, is there anything else either of you wanted to chip in on that and say, uh, any, any, any [00:49:00] opinions on how you see this panning out in the future?

I think, um. In that case, we probably covered it all. So thank you, Suzanne. Thank you, Tia. Thank you Kevin for joining us today. Uh, uh, it was good to dive into systems with you and find out a little bit more about both the system side of what you’re doing and how that, how that’s working, but also some sort of general points about how you’ve gone about publishing, uh, an undergraduate textbook.

Um, thanks again for joining us. 

Suzanne : Thank you for having us. 

Duncan : Thank you.

Thank you for listening to The Rest is teaching a podcast for computer science educators and practitioners. You can subscribe or listen to this wherever you get your podcasts. We’d like to thank and acknowledge the Council for Professors and Heads of [00:50:00] Computing. That’s cphc.ac.uk who have funded this podcast.

Production was by podcast.co. Thanks again for listening.

Transcript will appear here


Leave a Reply

Your email address will not be published. Required fields are marked *