Posit Cloud Essentials | Ep. 5: Teaching data courses and workshops
videoimage: thumbnail.jpg
Transcript#
This transcript was generated automatically and may contain errors.
Welcome to today's live demo. In Episode 5 of Posit Cloud Essentials, we're going to be diving deep into using the platform to teach data courses and workshops. If this is your first time watching, my name is Alex Chisholm, and I work on the Posit Cloud team here at Posit.
I'm also really excited to have a co-speaker for the first time who knows a lot about the intersection of R and data science and education really as much as anyone. Mine, would you like to introduce yourself?
Yeah, thanks for having me today. So my name is Nina Chetinkar-Arundel. I'm a developer educator at Posit in the open source team, but I'm also a faculty member at Duke University. And I have been using Posit Cloud for quite a few years now at this point, at times as part of my on-campus teaching and at times for teaching workshops that are either short-term or long-term workshops outside of here. So I'm happy to share my experiences.
Yeah, that's great. I'm very glad to have you here with us today. And before we get into the benefits of teaching with Posit Cloud, I just wanted to say, if you have any questions along the way, please drop them into the chat box. We will get to them in real time if we come across them, or we have time at the end to circle back after the demo we're going to be running.
The pain of setting up local environments
So what I'd like to start with actually is before we as instructors were lucky enough to have cloud environments to teach, like what life was like, and I want to take you back to a troubling time in 2016, where I tried and failed for the first time to get students in like a data literacy type course up and running with coding. And everybody was really, really excited about the opportunity.
So it was kind of disappointing the first time where we had everybody pull up their desktop IDEs and we spent the entire first class like troubleshooting individual pains that people were going through trying to get up and running, right? So like I couldn't get the right packages installed. I couldn't find the files that you're asking me to connect to. What even is a working directory? I'm on a different operating system. Like all of these questions would come up and it just, it became very difficult to have a starting point for all the students to start at the same place.
I'm curious, Mina, from your perspective, I do have like one or multiple moments of painful teaching experiences from this type of pain.
Yeah, I do. I, you know, I bet the pain is felt differently from the student side, but as an instructor, I can sort of pinpoint two things. One is when I would try to teach with IDEs sort of like on installed individually on student machines. One thing I realized is that I am not great at troubleshooting on an operating system different than my own.
So I've been a Mac user for quite some time now as I've been learning to use R and RStudio. So I'm pretty familiar with when you install things where they go and how to troubleshoot them. And I have always felt awful when a student comes up to me with a Windows machine and what I tell them is, I don't know how to help you. Oh, but I can help your friend who has an operating system similar to mine. Or sometimes some students will have their operating systems in a different natural language than English or a language I speak. And that usually feels really bad too when I can't help them.
Another thing though, is that for my classroom teaching, I have been using some cloud version of RStudio, I wanna say forever. Back in the day, RStudio, the company would actually, you know, allow a few instructors to sort of run a hosted version of what was then RStudio server, I suppose. And I would use that.
But something I had not realized is that when you distribute a data file to students and you're teaching in a computer lab, so the machines are not the students and not your own, but the universities, students might have no idea where the downloaded files go. So even if you, you know, think that you are 100% prepared to teach, you've even sort of set up your computing environment and you think things are ready to go, you go to the computer lab and the first thing you're faced with is where are the files are downloaded. And I remember spending about 20 minutes trying to get started with a class thinking this is not where I thought we would choke. So these things do happen.
And I remember spending about 20 minutes trying to get started with a class thinking this is not where I thought we would choke.
And it seems like it's very difficult to be prepared to teach in an environment different than one that you can access.
Yeah, that's completely fair and accurate. I think that's where Posit Cloud has made teaching a lot easier for a lot of people. In my role here, I've worked with a lot of individual instructors that are kind of running their own course within a university, also with entire departments that have multiple instructors that are coming on board and people that are just running workshops. But this ability to get students up and running with the same environment, the same files from the get-go, really it's just saved a lot of time on the instructor side.
Course design and content distribution
But as you mentioned from a student side as well, it doesn't lead to these burdens right away, which can be frustrating when you're just learning out, which takes away some of that excitement. So we feel that by finding a way to build a course or build a workshop around Posit Cloud, you're not only saving the time and effort of getting people in this unified environment, but you're able to bring people into this space where the system's going to scale with you. And if you have more students or if you have more instructors, they can kind of work into that flow as well.
And when we're thinking about like, how do you go about and just deliver any kind of educational course, broadly speaking, it likely follows something like this. You're trying to set up with some kind of learning objectives. What do you hope to impart to students? What do you want the outcomes to be? Why do you believe that they're important? From that, you're putting together course material, what's going to put them on the best path to acquire, to achieve these learning objectives, getting into content distribution, being able to take a project or take some code or just take a concept and put it in front of people at the right time. And then finally, the ability to support and assess along the way.
So, you know, was it effective? Where were the pain points? What individual issues came up that needed to have to be looked at a little bit more closely? So I'm curious, Minae, like, does this align with like your mental model as you're preparing courses, specifically data courses, which might be a little bit different than teaching something that doesn't have a technical or a coding-based perspective?
It aligns very well with the instructor I aspire to be. But I think that sometimes things go a little bit differently where I find myself sort of circling more than once through this, which is that, you know, creating course materials, that seems like the type of thing you should be doing at the beginning of the semester, for example. Like, however, for me, it's usually something that I'm doing throughout the semester. To be perfectly honest, at times, it's because I just don't have everything ready at the beginning, but also because sometimes, you know, I read about a cool feature in a new released version of a package or something new with Quarto. And what I want to do is I want to be able to show in class the next day, this new thing I've learned about.
So that might mean that now I want, you know, the most recent version of a package to be installed on the environment where my students are going to be doing the computing. And to be able to have access to do that myself, as opposed to going through IT, has always been really nice. And also distributing content as well. You know, I don't necessarily have every single homework assignment, every single in-class exercise prepared and ready to go to be sort of like distributed at once to students. So usually these things unravel throughout the semester.
I also find that students find it overwhelming to be delivered everything at once. And it allows me to pace things a little bit better based on how class went. So that flexibility of making things visible to students at a particular rate is another thing that I really like.
Yeah, I'm curious, what courses are you typically teaching? We talk with a lot of people that are teaching psychology or economics or statistics or getting into data science. Where is your focus?
So I am a faculty in the statistics department. My primary focus for teaching is introductory education. So that's introductory statistics or introduction to data science. The courses I've taught most regularly, most recently, have been introduction to data science using the data science in a box curriculum. But I also teach data visualization courses, both at the introductory and advanced level as well. I teach a few other things here and there too, but these have been sort of like the ones that I teach most regularly, and usually quite large classes.
What is quite large from your point of view?
Well, next semester it will be almost 300 students. So that's large for my university, yeah.
Learning objectives and course materials
Yeah, yeah, fantastic. Yeah, digging in a little bit to these themes a little bit more. So starting out with the learning objectives. One of the courses that I taught years ago was just this data literacy type course, data as a second language. So I knew I had three units, right? I wanted people to understand what data is. I wanted them to be able to manipulate it in more sophisticated ways. Then I also wanted them to be able to go out and communicate to other people.
So when thinking through, once I had that bad experience trying to do things with everybody on their own laptops, I moved into what could Posit Cloud kind of like deliver and how could I take some of this content and put it into some of the functions and features on Posit Cloud? So the first part was, what can I teach within RStudio IDE? Later Posit Cloud has added Jupyter Notebook, which is still in a beta, but for those instructors who do wanna have some native Python coding material, they can do it through that.
And then where am I gonna get my data examples? How are they gonna be brought into the system? Are we gonna go out and just import CSV files? More recently, Posit Cloud added data connections this year, which makes it easier to connect to databases, which from what I understand are not often taught in a lot of data courses, especially at the undergrad level in terms of just connecting and be able to start doing manipulation. But we found some really great public databases that are out there that allow you like to put in a Postgres connection, make that connection and start performing analysis on it, which is great.
Mene, are you typically working with flat files at this point? Are you using data files from within packages? What is your go-to source?
Mostly flat files. We start with data files from packages. So my teaching style is that the first thing we teach is data visualization. So we sort of start by visualizing data that is already, not necessarily I would say cleaned up, but in a data frame format, let's say. So already in R, the variable types are what you expect them to be like factors or dates and stuff like that. So that's why we start with data sets and packages. And then we take a step back and import data primarily from flat files.
So Excel or CSV files or Google Sheets is another one that we tend to import data from. I don't teach databases much, but another thing we do teach is web scraping. So then in that case, the data is coming from an unstructured source and then using code getting structured into a data frame.
Posit Cloud spaces and projects
Yeah, great. And then bringing this into what the course would look like in Posit Cloud. Posit Cloud I think is powerful from an educational point of view because it's based around this notion of a space. So you create a count as we're gonna see in a demo in a few minutes. You're able to create this dedicated space. You can use it for whatever you want. You can bring in specific people. So when thinking through it from the point of view of bringing in course materials, you can make a space, you can bring in new projects, you can create RStudio projects or Jupyter projects. You can now publish some outputs as well to the space. If you have Quarto, let's say, maybe summarizing the semester's content.
And then once you do this, you're able to manage all the content that you have within this given contained environment. So once you have it there, you wanna go out and be able to put it in the hands of students. So there are a couple of ways we'll look at where you can invite students to your space directly, controlling what they are able and not able to do, and then what they are able and not able to see at different moments. So Meena mentioned earlier, like not overwhelming students and throwing up every single thing from the semester. We have some features on Posit Cloud that can make that easier as well.
And then at the end of all this, like once you have students that are in the space, they're able to access your content and go along and learn kind of in real time with you, your ability as an instructor to go into a student's project, be able to run the code, maybe see what is going wrong, potentially fix issues or work collaboratively, make comments. And then at the end of all this, we were talking about, how do we assess and evaluate work?
And I know that we don't have actually built in functionality right now on Posit Cloud to really support the grading aspect of things. So I'm curious, Meena, in all these courses that you've taught over the years, like what is your process for evaluating, learning outcomes from this type of material?
So usually it really depends on the course that I'm teaching. In my Intro Stat courses, what we, the evaluation, actually in any of the courses I teach, the evaluation itself happens outside of Posit Cloud. And so students submitted using whatever course management system we're using. So in my Introductory Statistics course, that is happening on Gradescope, for example. So they render their Quarto document to a PDF file that they then export out of that Posit Cloud project. And then they upload it to Gradescope. And that's where the grading is happening basically. And feedback is being given there as well.
With my Intro Data Science courses, there is also a Git and GitHub component to the course. So in that case, everything is submitted as a GitHub repository and the evaluation, depending on the course, is either done there or on Gradescope as well. The way we've been, like for the courses where I teach Posit Cloud, the way it has come into play has been more on the, sort of the support side, the go into a, like not the assessment side, but the support side, being able to sort of go in and diagnose for the students what the issue might be.
And I will say that that's usually not like a first thing I offer to the students. You know, if we're, even if we're physically together in office hours, but also if we're not, and we're talking on like a course discussion forum or something, I try to get them to articulate what the issue is. But sometimes it turns out that we're not getting anywhere with that. And the student is getting more frustrated because they sort of don't have the right terms and I can't see what they're doing. And maybe they're not sharing like a full screenshot with me of what's happening. So being able to just peek in, not necessarily always to fix the issues, but to understand what the issue is and then leave the space and then articulate to them, here is what you might want to look into. It's really, really nice.
Live demo: setting up a course space
Yeah, that's great advice. What I'd like to do now, before we get into a live demo, is just talk a little bit about the two ways that you might be able to set up instructor style accounts on Posit Cloud. If you are like an individual instructor or you are running workshops, you know, you can create an individual account. You can go up and if you have five different courses, you can make five different spaces, or you can use one space and reuse it for different groups and cohorts of students that are coming through. If you are part of a wider group within your institution or your university, we have organizational accounts where there can be sort of central management of the instructors that you would like to be a part of that. So this means like centralized billing and also the ability to sort of monitor and see who's doing what in which space.
So what I would like to do now is hop over to Posit Cloud. So I'm gonna switch into the browser here and I'm gonna go ahead and log in and we'll start just by looking at the individual approach to doing this. And what I always encourage, like if you're new on this call and you haven't been in Posit Cloud yet, there are free accounts that are available and it's the best way to sort of experience and feel what Posit Cloud is like because we don't get a lot of this functionality by different tiers of service. Like if you were to have a paid plan eventually, you would have like more compute hours and you'd have more compute power, but all the things, all the building blocks such as spaces and projects are gonna be there on a free account as well.
So let me go ahead and log in now. And the first time that you get into Posit Cloud, you're gonna get to a relatively plain page that is known as your workspace. And here you could start building projects and you could see the specific project that you might be working on, but what you can't do in this first space is invite others to collaborate with you. And of course, we're looking at education here. So we want to have students, we wanna have a back and forth of our content. And for this, we're gonna go to this notion of space.
So if I click on the end and I scroll down, I can create a new space. And maybe we call this stat 250. Most people won't have a dropdown here, but if you have multiple accounts you can access, you can choose one here. I'm gonna go to my individual personal account and just create this space.
So we have a new course area. You can see that two new tabs popped up. I have both data, which are these data connections that I mentioned earlier. So if you do work into your curriculum, some ability to go out and touch a real database, you can set up the credentials here so that students don't need to be entering these themselves over and over again. But more importantly, we have this member tab. And here's where we're gonna be able to have a couple of different ways to bring in different people into our space to engage with our content.
And we'll do that in a few moments. But first of all, let's start off with like the core functionality, right? You see this dropdown new project. If I click on this, I see four options. I can either create a project from a template. And if I were to do this, you're gonna see a few things. First, you're gonna see that we don't have a template defined specifically for our new space yet. We could do that, and we'll do that in a few moments time. Or you could create a new project from a template that really Posit has put together for you. So for instance, we have data analysis in R with a tidyverse. If you were to go into that, you'd be able to see a markdown document that talks through different functionality within the tidyverse for basic exploratory analysis. And all the packages, all the data that you would need for those examples would already be included in there.
But the most common thing I think teachers do, they go through and they create a new RStudio project. And maybe this will be called week one EDA, depending on what we're teaching. It's going to take about 15 to 20 seconds to go ahead and spin up a new instance specifically for your project. And then once you're in it, I would say 90, 95% of what you'd expect on RStudio IDE on your desktop, you'd be able to achieve and accomplish here as well.
So you can go ahead and upload files from your local environment. You can make those database connections either through the ones that we defined earlier through Posit Cloud, or a new one through other database drivers that happen to be available. We could build in markdown files, code. Again, we can bring in data to support all of this and essentially building up what you want in week one for your students to be able to engage with.
I also won't publish anything here, but I'll show you the functionality we have as well. So maybe you're working with a Shiny app. What we can do is build up the Shiny app. And we'll just look at the base one that comes included. We're gonna have to go out and get all the packages first. And that's what it's downloading right now.
And then once that is complete, I'm gonna go ahead and call this test. Gonna make sure that when we run this app, we're gonna do it in our window so we can see it within the pane. So we can see right away our interactive Shiny application. And because we're all part of this same unified experience on Posit Cloud, if I wanted to publish this to my space for other students to see, you could do that. So again, we're just gonna go ahead and install the required packages to make this publication publish to Posit Cloud. And you can see by default where it's asking you to go is to the space that we're putting it in. So we won't do that now, but if we did and we go back to our content list, we would see both the project that we just created, the week one EDA, and we would see the project.
Assignments, templates, and student access
Now at the moment, we're missing two key components to teaching a course, right? We're missing students to look at things. And we're also missing the ability for students who might be here to see what you worked on. So this first RStudio project, if you wanted to put that in the hands of students in your space, you can see that it's marked private. We're gonna go into settings and we're gonna go to access. We're gonna change that private to space members. So that's the first thing that you would do to put the content in front of students that are in the space.
And then we have two options here that can be very relevant, I think, when teaching a course. The first is making this project an assignment. And if I were to click on this, you can see that there is an assignment button that comes with that week one EDA. And now when a student were to join the space, they would come in and it would change. For them, they would see start. So they know that there's an action on it. They would click start. It would make a copy of the project specifically for them that then they could interact with without risking what you put together in your first one. It's a safe environment that they can go back and they can create it again and again and again if they wanted to.
We also have the ability now with a new feature called templates to turn this into a specific template for the space. So if I click on template, it's gonna take away the assignment functionality. I can make this template something that we can get from that initial list of start a new project with templates. I can also make it the default for every single RStudio project that comes from this space.
Let's just go ahead and save it as template just to show you where this would now pop up. It becomes a template within your space and any student that came because it's available for all space members, when you click on new project from template, you can see week one EDA. So there are a couple of different ways you can do things now, now that we have template functionality as well. We'll look at it in a few moments. Another example of using templates may be to like surface like all the data sets you wanna be able to share out throughout a semester. And if a student wants to create a new project from those core data sets, they could again come back and back to this template.
Minnie, I'm curious when you're setting up courses on Posit Cloud, are you typically using assignments or templates or nothing at all?
Both, so I definitely use a template particularly because there's a, I always use the Tidyverse packages and I like being able to, I teach with library Tidyverse. I wanna make sure that we have all of the Tidyverse packages installed, even if for a given lesson, we may not be using all of them. And so that's one of the things I put in my template for sure. And also, rendering a Quarto document with our code and that requires like Knitter to be installed and stuff. So I make sure that all of that is installed in the template. So that's the first thing I set.
And every once in a while throughout the semester, I'll update the template too. So that going forward, like we use the new packages, but usually that stays for the semester. And then for each day that I teach, so this semester I'm teaching an introductory statistics course where we're using Posit Cloud. And every single day we have an application exercise in the class. So that's like a live coding thing. So I have stubs of code that I share with the students in a Quarto document. And then we sort of improve upon them during the in-class exercises. Those are set as assignments and I make them visible sort of shortly before class. And then their homework assignments and stuff are also distributed as assignments.
What I like is that it nicely contains them for the students. So in my opinion, it's sort of almost an improvement above working with the IDE for learners because the idea of switching between projects in the local IDE is I think something that comes with experience versus in Posit Cloud to switch between like different sets of documents. You have to switch the projects. So I feel like it teaches you to think about projects earlier than you might otherwise which is I think a benefit.
So I feel like it teaches you to think about projects earlier than you might otherwise which is I think a benefit.
Yeah, yeah, I think you're right. Let me jump now from the space we just built into one that looks a little bit more filled in but we don't have time obviously during a quick demo to put this together but I'm gonna go into spring 2022 and here I've got a course. It's filled out. You can see that we've got a bunch of files here. A lot of them are repeating in names. The reason for that is that these are coming from students who have made copies of these assignments but you can see right away we've got more going on in this space.
Maybe even a little bit overwhelming at first. So if you were the professor and you came in maybe mid semester and you saw all of your students interactions with a bunch of different files, we have ways to filter this down as well. So if you click on your content, now you will see essentially what you have made and what you have released to the group. So we have two assignments. You can see manipulating data which is available for all space members, understanding data available for all space members. And then we have a third one communicating data which is still private. So right now a student, which we'll see in a few moments who comes into the space wouldn't see this because it's not yet available for them.
And we have the two assignments. As I mentioned, we also have this template and the template is just an RStudio project that has a bunch of different data sets that if a student ever wanted to build a project on with those libraries that Mine mentioned and with a bunch of data sets that they can test it out, they could because we've made it a template go to the new project from template and see sample data sets. And again, create that project with all of those assets pre-included.
So what I'd like to do now actually is show you what the membership tab looks like. So you saw on the content list that a few of the content items were matched back to individual students. And you can see here right now in our course, we have me and then we have student A, B and C. Each of them are given this contributor level of permissions. And if you click on initial role here on the far right, you can see who can do what. But typically, if you are the instructor, you're gonna be the admin on the account. And if you have students that are joining, you want them to be contributors. They're gonna be able to engage with the material you've put up there, but they're also gonna be able to create their own projects when they want to and play around, again, in a safe way that isn't going to break anything.
There are also two ways to bring members to your space. So if I click on add member, the first thing that's going to come from this, especially if I click on invitation required and I click add member, I'm gonna have an email address. So I can put in a new individual's email address. I could tell them specific information in the copy of the email for them to come join the space. They would receive an email. They would click the link. They would come to Posit Cloud. If they already have an account, they could simply just go ahead and accept it. If they don't, they'll be required to sign up for a free version, and then they can come in on most education plans.
When you start having a lot of people in your course, you might want to just go ahead and use a sharing link. So here we have an anonymous link that I can copy. And now on my clipboard, I've got this link. I can give it to students in a chat or via a generic email. People could follow this and then come into the space. And what I'd like to do now is take that link and show you what it looks like from a student's perspective who received this invitation.
So I need to switch my screen here, and I'm going to bring it now to my other window. Okay, I think you can see it. So here we are on Posit Cloud on a student laptop, let's imagine. I'm going to paste in the invitation to join that space. I do already have an account on this system, so I'm going to go ahead and log in.
And now Gustav is going to be able to get an invitation to this space. Are you willing to join? If the answer is yes, you come in. And now I'm going to go ahead and log in. Are you willing to join? If the answer is yes, you come in. The first thing you see is some about text that the instructor was able to put in the space specifically. And then the next time they log in, they won't go there. They'll go straight to this content area.
And we can see a few things. We can see that I've got four pieces of content, and I've already joined this space under this account, which is why I just wanted to say continue. But if you look at manipulating data, like this is something that the student has not yet started. And when they click on this, we can see that a project does open up. It's called manipulating data. It's going to have the initial code in that we want the student to experience and play with. And it will also have all the packages and data sets that were able to be set up initially. But what this does is it doesn't take your project, the instructor project that you put together. It saves it as their own.
So we can see here now we've got manipulating data. It is from that student D. It is currently private. So only they can see it within their space. Only they can see it as well as the admin instructor can see this content list. And we can see that they can even filter down the information a little bit better to see what's going on in unit one, and maybe what's going on in unit two.
Now we talked on the other screen about that template. So imagine the student comes into the space and they don't have this thing about data sets. You can say, well, go create a project from a template and you'll be able to find the different templates that are made available within the space.
