Jose M Vidal

Putting the magic in the machine since 1980.

Tuesday, November 17, 2015

Periop Mobile Learning System

We have a first version of the Periop Mobile Learning System website which features some screenshots of the the Periop-MLS Android app we have built and will be testing on the Greenville Health System hospital. Periop-MLS communicates with our own backend server, or with a commercial backend.

We also have a second Android app that is currently being tested in GHS, more later.

Thursday, October 9, 2014

Automatic Generation of Agent Behaviors

This past Summer at AAMAS my PhD student Bridgette Parsons and I published a paper with an algorithm that takes raw observational data and builds an agent behavioral models. Basically, we have lots of data of what nurses do in a hospital (with timestamps) and used it to build an MDP-like model of the "average" nurse. Its not really an MDP because we have loops, and its not really "average" in the mathematical sense. You can get the paper.

Bridgette is now building a first-person shooter game which she will use to gather data on gamers' play. We will then use this data to build a player model. That is, we plan to automatically build NPCs that behave like real players.

Wednesday, November 6, 2013

iMedTracker: Offline Webapp for Tablets

The scheenshot on the right is of a webapp I developed to help track the movement of nurses in a hospital. The webapp is to be used by someone tracking a nurse and is optimized for iPads. The user taps on each event as it happens and the app records the time and duration of all events.

The app uses jquery mobile and localStorage so all the data is stored on the iPad, since there is no wifi on the hospital floor (that we can use). At the end of the day the user can then upload all the data to the server by the click of a button.

We then use this data to feed our 2D Netlogo models, and 3D Unity models, which you can learn more about by reading some of our recent papers.

This work is part of research we are doing with the School of Nursing into building agent-based models of workflows inside a hospital, and how these might be used to help reduce errors, and optimize flow.

Android and Speech Recognition Hacking

As part of this project, I developed an Android app that uses the built-in voice recognition to let nurses check items for a patient as he is getting ready for surgery.

Voice recognition is was found to be not good enough, for some words. We are examining possible ways of post-processing the results that come back from Google in order to improve the accuracy, for our domain. For this, I am starting with simple Bayesian learning techniques, but, we might try other techniques in the near future.

The app you see on the right was just for testing. I have another app which implements the actual checklists. We plan to tie it to the hospital's Electronic Medical Records systems using their REST API. Fun stuff!

As always, if you are a USC student (grad or undergrad) interested in hacking on think kind of stuff, just email me. We are also building 3D simulations in Unity.

Senior Capstone Project with GitHub

This year I am teaching our Senior Capstone Project class.

I am using git and github to keep all the 14 different projects on the same page, more or less, or at least, to keep me from completely losing control. The github wiki pages come in handy for keeping all the other project-related documents: Design, Architecture, and Requirements documents.

To learn more, check out my git and github videos and presentations.

Tuesday, August 28, 2012

Teaching Web Applications: github and youtube

I am having my students use git and github for turning in their weekly project homeworks in my Web applications class this semester. The folks at github gave me 20 free private repos in our CSCE242 group which I am giving to the students, one each, so they can push their code without being able to see other students' code. The main goal is to get them familiarized, and maybe enthused, with git. A secondary goal is to make my grading easier. I hope to use github's commit commenting facilities to comment on specific lines of code in their code. Also, I'm setting up a cron job to git pull all the project locally right after the deadline, so then I can just open them up and run them, then maybe make some minor changes and push them upstream for the students to use.

I am also trying to flip the class, as I did in 145, by making youtube screencasts and assigning readings and then dedicating class time to one-on-one help with their ongoing project.

One interesting note is that the number of views on my Java tutorial videos did not go down after the semester was over but instead has stayed roughly the same over the Summer, as shown below. Perhaps this is a reflection of the current larger trend of 'everyone should learn to code'.

Thursday, June 14, 2012

Constructive Network Formation Models

Gary Fredericks recently presented a poster at AAMAS on our recent work on An Analysis of Constructive Network Formation Models.

This is really interesting theoretical work where we are looking at the possible topologies that can emerge given initial payment rules. For example, given a bunch of disconnected nodes (think ISPs before buying access to any other ISP, or businesses before establishing relationships with any other, etc.) and a rule that says that any link between two nodes has a fixed cost which must be paid by the two nodes in questions, but where everyone benefits from being closer (fewer edges between them) to everyone else, what kind of topologies will we expect to emerge if we let all agents build edges as they see fit?

We examine this problem in part by building graphs of graphs. That is, we built directed graphs, such as the one you see here, that show the possible evolution of these networks over time. From these we can then determine which topologies, or which features (small-world, small-diameter, etc.) are more likely given different initial rules of the game (equal payment for edge, one must pay, auctions, etc.)

Thursday, May 3, 2012

Online Classes are Just the New Textbook

About 4 years ago I started making videos for my students in 145: Intro to Programming class to watch. This semester I made 62 Java tutorial videos for them to watch. Their response has always been mostly positive: about half like them, the rest don't care, and the view logs show they are being watched, a lot.

This semester was the one where online programming classes really took off, with new startups like Audacity, Coursera, and CodeAcademy, all of them inspired by the now 11-year old MIT Open Courseware. These online courses are getting a lot of press because of reported hundred of thousands of students signing up. I told all my 145 students about these resources at the beginning of the semester, along with my own videos.

So, did the students learn more this semester than in past semesters? No. As evidenced by the in-class final, their proficiency at the end of class remains the same (I first taught this class in 2006).

I think videos are a great alternative way to present information, and the more different ways we can present the same idea to students the more likely we are to reach them. I will continue to use all these online resources in my own classes and continue to make my own videos, and I hope the videos get even better. But the fact remains that there is no teaching, there is only learning. That is, if one wants to learn how to code there is simply no alternative but to sit down and spend hours upon hours practicing (replace 'code' with 'play the guitar', 'do calculus', 'write well', 'play golf', etc). A teacher/book/onlinecourse cannot do the learning for you. The learning is all up to you.

Online classes like those from udemy and coursera attract those who are not in school (and, mostly outside the US) who have a deep desire to learn a specific topic (like, programming, to get a job). These people would have learned the subject by reading a book and practicing (just like I learned programming in high-school by reading a book and practicing with my Apple IIe). The online class just makes it a bit more pleasant, for some, and most importantly it is free. A textbook can easily cost you $100.

The ongoing challenge is not putting more courses online. That will happen, of course. All information is, or will soon be free. The challenge, and the job of Universities, is in guidance and certification. There is no way one person can learn everything so, what should he learn? Is it at the right level for the students in class? Most (all?) MIT and Stanford CS freshmen already know how to program, so their 101 class should be much different from ours. Then, can we certify that the student has indeed learned what he claims and not just outsourced his homework? It is trivial to cheat in an online class.

My 10-year old son is learning about percentages. I wish I could put him in front of some Khan Academy videos and have him do their practice exercises and, boom, he would be able to tell me if 10% off a $18 purchase is a better deal than 2 for the price of 1 at $15. I tried it. It didn't work. I still love the Khan Academy and we use it a lot, but it does not replace practice.

Saturday, March 17, 2012

Web Applications Class, for Graduate Students

I will be teaching CSCE 242: Web Applications again in the Fall. Go sign up, please!

Also, if you are a graduate student and want to take it come talk to me, we can probably work out that you can get CSCE 798 (directed study) for it. And, if you are a PhD student interested in doing a thesis related to web applications, online communities, or agent-based simulations (even better, all of these together!) come talk to me!

Friday, February 10, 2012

Interactive Quiz Web Application

The video below is a short demo of a little webapp I developed for Julia Englund, Psychology Department, for giving interactive tests to (young) kids. The kids go to the website, take the tests, and their results are automatically sent back to the server. Julia designed the tests, I merely implemented the program. The app uses jQuery and the soundmanager.js library for handling sounds. It is an example of how one can build desktop-like interactive applications using javascript.