Putting the magic in the machine since 1980.

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.

Friday, January 20, 2012

Java Tutorial Screencasts

Back in 2009 I did a bunch of long screecasts to help my students in CSCE 145 learn to program in Java. They were well received but one complaint was that they were too long. This was also reflected in the logs as the number of views for the first video (first one in the semester) was very high but then decreased with each subsequent video.

In the mean time, the Kahn Academy has taught us that 10 minutes seems to be the magic number for online tutoring videos, after that people find it too unwieldily. Thus, I re-did all the videos for this semester. Now I have about 60 Java (and eclipse) tutorial videos. Youtube is gathering data on views. Let's see what happens.