We implemented some of their procedures and taken them in a little bit different direction. I work at phoneticTuck School of Business. A little context, its a smaller institution.
We have about 500 students. We are very insulated from the whole Dartmouth community. We are a professional school within the Dartmouth community. A lot of the work we do, we do independently. It does not overlap with what goes on at the greater Dartmouth community.
Im gonna talk about filling in the gaps with apps. Weve been using Canvas for about a year. Its been going well. It solves about 90 of what our users want.
We wanted to find a way to fill in that extra bit to make Canvas work a little bit better for our users. We found that using external apps was a way were able to achieve that. Im gonna talk about three things in this talk. One of them is why we wanted to do this. Second, to show you what we have done to develop some of these apps, finally a very broad overview of the process we use to develop our applications at the Tuck school.
First, why is an important question. Its a big investment to write your own applications. Its easier to write a feature request, ask your friends to vote that up.
Its quick and simple, or to say its just finding a work around. For us, the first answer for why comes to a number of 100. What we wanna have happen is, a professor comes to us and says, we want this to happen. We want to be able to 1100 say yes, we can make that happen.
Were lucky that we have a small number of users, we also have users that havent asked for advanced stuff yet. Over the past year, weve developed 14 LTI applications. Weve been able to answer all our users needs up to this point. This is the goal, we might not always reach it.
It helps us to think about why were doing what were doing, to make this investment. In a deeper level, why we do this is we found that by developing these apps that answer our users needs, it creates a sense of trust in our users. A lot of our faculty are halfempty type people.
If they look at the LMS, and if a little bit is missing they disengage from it, they dont use it to its full potential. By being able to answer all their uses, now they get excited about digital delivery of content. They think about potential, opportunities, it is changing the culture of our professors, who is resistant to enter this digital solutions.
It allows us to think more about how we can transform the educational delivery, how can we innovate, make the delivery of education better, rather than changing the administration. Its nice to say were no longer submitting an assignment in a box, were submitting it online. How do we take that further, how do we move it so the education itself is transformed and improved. Were seeing that slowly, some of our professors are really starting to embrace this idea that we can change things, we can ask for things, we can make it different. Building these apps has allowed us to create that cultural change.
Thats why. Next is what, I wanted to show you a few of the applications weve developed. Some of the gaps that we filled in the native Canvas LMS.
The first app that was requested was a wiki discussion board. For a lot of our users, they wanted more structure in the wikis discussion boards. They wanted more ability to add layers of structure, so we built this. Over here on the left hand side, you can see the wiki pages.
The wiki is divided into pages, each page is divided into sections. It provides a sense of structure, so the content is more easily managed. The second request was they wanted this to be exported to a .pdf at the end of the course, so the students can take this with them.
They collaborate, create this document, and now its portable document they can use. A lot of the content is very related to their careers, their professions, so the ability to take this with them was an important part. From the professors, they wanted analytics.
The analytics on this tool provide, the number of words, the number of posts per student, which is kind of a proxy for the engagement metric in the application itself. Professors found this easy to use, and the students loved it. We use it for both wikis for collaborative creation of documents, but also for the discussion board where students might, on the left hand side, it could be session one homework, session two homework.
It serves for both of those. Because this is an app weve created, and this runs within Canvas, we took the main core of it out and wrapped it in another application that allows users from outside of Canvas. A lot of our courses have guest speakers, experts who come in. This allows the experts to participate without joining the Canvas page, they can post. This serves a lot of motivation for our users.
Someone whos reading this, whos an entrepreneur whos actually practicing this, can give me feedback. It brings the community to a wider space. This is our wiki. The next app we created was an attendance seating chart.
A lot of our professors wanted to have a seating chart they could richly use to enter data on. They wanted the seating chart to mirror the physical layout of the room, so when there are rows and aisles, they wanted that to appear on the seating chart itself, as well as the ability to enter data into the cell, so each cell has data points you can enter directly. Participation scores for that class session. They can make this visible to the students, so the students have realtime feedback on their participation. Participation is a big part of the discussion class format at the Tuck school.
All of this information is easily exportable to a excel file, or they can push it into Canvas as an assignment. This was our seating chart discussion tool. Next up was a scheduler. We use the scheduler quite a bit for events.
The key requirement there was we had an event that was occurring in multiple locations. We needed to handle that case that you might have different rooms at the same event. Students could then sign up for that event. They needed wait lists that automatically generated, and filled in the wait lists. Then the ability to send announcements to people who joined the event, so they could catch up with them.
This was our scheduling app we developed. These apps took about a week to develop and implement. They were quick to develop. This next one, learning quizzes.
Canvas quizzes we use some, we also needed to focus on the lowstakes quizzes. For that we developed a lot of learning materials where the feedback needed to be given after each question. Here when a student submits an answer to a question they get immediate feedback, correct or not. The questions build on each other, so if you get question one wrong, you need to know that before you go on to question two, or it cascades down.
We needed to develop a tool that allowed us to replace the quizzing feature for native Canvas use. Those are some of the bigger ones weve developed, then we went on and developed some smaller ones. First was a lots of dots.
These are secret apps. Ill just explain it. The first one was an announcement replacement. Our faculty were really concerned that our students would not get announcements immediately, that they could change their preferences and users announcements contained critical information. A professor said, how do we know if they turned their preferences off.
We had to create a replacement that would be sent out immediately, they would also target particular sections in a course. Many of our courses have multiple sections, they want to send an announcement to section one only. That was one way to do that.
Secret app number two is a doubleblind peer review. We wanted to give peer reviews that were both anonymous to the reviewer and the reviewee. That was one request. We wanted to be able to make submissions public, so that after you submitted an assignment, you could share that with a full class. A lot of our assignments are projectbased.
Theres a lot of rich learning that can occur from other users who have submitted applications. They can go in and look at the application and say that is a great project, how did you do that. It encourages more collaboration, but the initial submission is a private submission. The professor can make those public.
We had one more, it was on the Canvas quizzes, the time. I dont know if youve encountered this, we give quizzes that dont have a time limit. In the moderate quiz list, it shows the time rounded to the nearest hour. Our quizzes, we needed to know the minute level they used for that quiz.
If you give a quiz that lasts two hours, and someone took two hours and 29 minutes, it said about two hours. At two hours and 30 minutes it said about three hours. It rounded to the nearest hour, our faculty wanted to see that in more detail.
These are small applications that were used to solve some small problems. It made ours users happy. Our faculty was saying thats great, you can solve this you can solve this. They started to ask for more unique solutions that were able to integrate further into the process.
How do we do this. I am not in the IT department. My position is I was designated to train other Canvas users to administer the LMS, to do instructional design work.
Im not a part of the IT world at Dartmouth, which was been a good thing, its allowed me to be agile and develop these apps quickly and allow us to get it done in a smooth way. Because I work as an instructional designer with our faculty, we have a good relationship. Its easy for them to talk to me and say hey, can you do this. Can you do that. This direct contact makes it very simple for me to get the ideas from them to bring them quickly to use, so they can use them in the classroom.
We have a web server that we host, its independent of our IT world. Its a thirdparty web server that we use. In our stack we use Java script to develop our applications. Scripting language, and a database. Thats the basic setup that is needed to develop any web applications.
Our choices for these, our services we use something called phoneticLinode. It charges about ten dollars a month for the service. It is a small fee, but it is an investment. We develop our Java script using angularJS, which is a little different, Canvas uses EmberJS if youre familiar with that.
AngularJS is a framework thats backed by Google. It makes it easy to develop rapidly. For our scripting languages, we dont use Ruby, we use PHP and node, two different scripting languages. No particular reason for choosing that, it just happened to be what we decided to use at the beginning. For our database, we use phoneticMariaDB and phoneticMongoDB.
One is an SQL database, and MongoDB is a NoSQL database. Thats the framework of the infrastructure we use. This is all posted outside of the IT world. We sidestep some of the conservativeness that we found in the IT department. It allows us to iterate quickly, get up to speed, weve had good results with this so far.
Over the past year our IT department has been down eight times, and we have been down zero times. We actually have better stability, even though we take more risks in our development. Now we have this environment set up, we generally take three steps to our applications. Regardless of what were doing, we follow the same process. Once youve been through it once, the second time becomes much faster.
It gets easier and easier. A lot of these steps are replicated until you get to the actual code. The first step we do is authentication.
Thats the core of the LTI app, thats what it does in its current version, LTI one. LTI two will add a little bit more, but authentication is the heart and soul of the app. The authentication is using an LTI library, there is lots of them out there, whatever your scripting environment is. Its easy to set up. All the authentication does is tells you who is that person, what do they do, what course are they from, it gives you that information that you can use in your application itself.
That looks really bad so were gonna skip that. Thats a code example, were not gonna look at that. After we authenticate, we move the user and say who is this user. We know who they are, we then want to get extra information from Canvas.
A lot of our apps use enrollments, for example our seating chart application. We found we could query the API, get that data back, and use it in the application. If we did that every time we run the application, our users, our faculty will say why is this so slow. If you have a course with 300 users, the API isnt as responsive as they want it to be. What we did was we would go to Canvas at the beginning of the course, call the APT, get the enrollment with data we needed, then store it in our database.
Once it stored in our database, we can query it much faster, now the app becomes responsive. Most of our apps have a button that says get the data, whatever that data might be, so our users have an easy way to refresh that data. Its not synched automatically, that way each time they open the app they dont need to resynch, but there is a manual override for that if they need to. We get the Canvas data in the enrollment. I would show you what that looks like, but again that doesnt look good there.
Questions at that point. silence Speaker: Good questions. The first one is how do we get the applications into the courses. Is it a long navigation, a jumbled mess. The answer to that is we have the wiki we showed you initially.
We doubleuse that as a repository for a list of all applications. Within that wiki it tells us how they can install the application in the course they want. These are not by default on in all courses.
The user needs to select. If they want to use the attendance seating chart they would install that using the settings course menu. They arent by default on, so we avoid that jumble of problems there. The wiki itself has all of our keys and secrets, so the users can get in there.
The wiki also has instructions on how to use it if theres anything to do. It is our knowledge base. Our wiki is used in courses, but also as a way to deliver this information.
The second one was on the seating chart app. What happens when enrollment changes, we have a fairly static enrollment, we have an initial enrollment, then a dropadd a week after the course starts. What we do is we run a script that automatically resynchs those after a week. If there are special changes, which are rare in our institution but they do happen, there is a manual override in the users can at any point say refresh and it gets a refresh and it drops people that dropped and added people that added. Weve got that process, it runs the same thing in courses.
Other questions. What it does, it goes through and it knows the current enrollment we had previously. It looks through and compares what was in there.
If theres something new it adds it, if theres something thats in the new enrollment thats not in there, it drops em outta there. It does it different. Does this run in the background. No it doesnt run in the background. Its a script that we have, we say that it runs at this point in time.
Its the same for all courses, were lucky its phonetichall dropadd period are the same point, it usually happens on a Saturday morning. We run the script Saturday afternoon. Then it resynchs everybody, takes all the people who added and adds them, and all the people who dropped, out.
How do these appear in Canvas. They appear differently. One way they appear is on the course menu. For example the wiki will appear on the course menu, give it a title when you install it. Its only installed if you decide to.
If Im in a course and I dont need a wiki, it wont appear. Its only if the user decides to, and they go into our knowledge base of these applications, and say I want that wiki, and they put that in there. It takes about two or three minutes to install. Its not a hard process. For some of the other applications, go into an assignment.
For example we wanna deliver different files to different people. We have roleplaying activities, where you might be in role A, I might be in role B. I wanna deliver case part A to you and part B to me. We have an application that appends those different files based on your student id to that assignment.
It doesnt appear, except in the assignment. The students dont see anything different, they see, your role is A, your file is this. Those two ways, we handle it by forcing the users to install these applications if they need them. So far thats worked well.
Our users are fairly comfortable doing that now. Its been a smooth process. You install through Canvas settings, through the course menu. You go to settings, say install this app.
All our applications use by url, so you have a url that does all the configuration for that, so they have to do that process. Is our Tuck instance different than our Dartmouth instance, and how do we navigate help desk requests. Our Tuck instance is a subaccount of the Dartmouth instance. We have a single instance.
Help requests, because were a small school, come to me. They know where to go to, usually the people who have the requests are the people who ask me about the applications. Help requests, we have a help desk in the Tuck school, which is the next line of support.
People outside of the Tuck community dont use the applications much, so there arent many. Most of the help requests go to me or the Tuck help desk, then they refer back to me. So far, because of our small scale, were able to manage help requests.
So API access, and what level do we use. So how do we access, root API. We met with the developer at Dartmouth, the developer oversight committee, talked to them about the needs we had.
They granted us a root access key so we can get the API calls we need. They were supportive of that, they saw we have a strong need for it, our users were vocal in requesting this, and it worked smoothly. We were lucky on IT support. Do you ever get pushback on privacy of student data.
No. Not yet, we talked to people briefly about that, they said theres no trouble. Most of the data we store is innocuous data.
Its a Canvas user id, attendance, participation scores. We dont score grades in our environment. A lot of the other information is not that private, we dont store too much out there, but it is a concern. Weve met with out security people, and theyve vetted our setup. Theyve passed it through and it works well.
Its always a concern. First question, who does the development. And isnt Dartmouth at large curious about out success.
The development is done by me. I am the developer, phoneticideaer, system administrator, bug debugger, I do it all for that. Partly because were a small school, we dont have resources to hire a developer. Im the one who does that. Are they curious, I wish they were more curious to tell the truth.
We had a meeting before we came out here at Dartmouth. One of the undergrad, one of the main problems with the discussion board, they said it doesnt have enough structure. I said we have an app, we built that, we solved that problem. They said OK.
There wasnt much interest beyond that, and Im not sure why. Maybe because Im not an official developer, Im not a third party. I dont have a label that says developer on my sleeve. Im always trying to push, because I think these apps could be useful in different areas.
They havent been adopted as far as I would like them to be. As long as were happy, our users are responding, and were getting cultural change, then Im not spending a lot of time evangelizing our apps. Submissions made public, how many instructors use it.
We run about 50 courses per term, we usually have it in a quarter of the courses. What it looks like is theres a table. At the top, you select the assignment, and the instructor decides which assignments should be public.
The user can select the assignment, they see a list of all the submissions by the students. They then download those. Oftentimes theyre pdfs or powerpoints or excel files.
All the students can click on that, its a course navigation button they click on, then they can see the list of submissions, download theirs, and interact with each other based on those submissions. Its a question about notifications, and where they appear. Notifications we have on our web server. We have an email there as well. We use that to send out email notifications as well as our database persists notifications.
When the user goes in, for example our announcement app, they can see the list of announcements within that application. It bypasses the Canvas notification preferences, so our users can get immediate release of those notifications if they want. The question is about the API calls, does it happen in angular or the php side. API calls need some server to request that.
What angular does is calls the php. The php makes the request to the Canvas server. The Canvas server spits it back to php, and php delivers that to the angular app, then angular decodes that.
It comes back in this big data, we pull out whatever pieces we need for that. I can put them on github for you if you want. Theyre not there yet. I can put them there in a week or so, then post to the jive event for this course. If you dont see it there, my email is there.
You can email me, Ill do it as quickly as I can. Most of these should be fairly small, and fairly easy to implement. Ill put these up, if they dont make sense, shoot me an email, well get it implemented. Thank you. APIs and LTIs have been a real savior for us.
We hope it helps solve a lot of problems for a lot of people. Thank you.p