We’ve been thinking a lot lately about finding new ways to give our students more computer programming skills. We don’t have a computer science major but are willing to do certificate/minor-type things that will help students succeed in their chosen major. One thought I had was to introduce students to web programming (scripting with PHP and database backend with MySQL because that’s what I know) but I’m not sure how to pitch that class (and at what level). Instead I thought I might just try to develop a club/group on campus that develops web apps to see where the sweet spot is.
Web vs mobile apps
This article helped me clarify my thoughts about why web and not mobile apps. Honestly, for me, it’s a learning curve thing, since I know how to do web stuff (I’ve written my own LMS, a course schedule web site for my institution, a site for concept tests/quizzes, a jeopardy quiz site, and an Arduino Internet of Things site (which I wrote about in my last post)). Also it seems that you don’t have to make a choice between apple and android if you go with web apps. However, I think we’ll concentrate on things that’ll work well on mobile browsers just to keep that audience in mind. It helps that Twitter Bootstrap is mobile-first.
The hope would be that we could develop something that people need. I wrote about something that I’d like a while ago so maybe we’d just start with that one (it’s a site where students could upload photos that would be added to an ongoing slideshow that would be projected). I’d love it if we could respond to the needs of the community to make things that are useful (and teach students some useful coding skills).
We would use github and trello to keep organized. Github would allow us to has a core of working code along with branches where new features are developed. Github would also let new people join in pretty easily, though a working project might be intimidating to some. At first at least we’d be coding in the Laravel PHP framework. Participants would need a development machine that could run Laravel/php along with mysql. Installing xampp would do the trick, along with composer to easily handle various code dependencies. Once they have those working (really it only takes about 10 minutes to get all that working on a windows machine) they would just pull down the githup repository they’d like to work on and they’re in business. Really the notion of handling code with others using git is a useful skill.
Trello is an awesome way for a group to keep track of what there is to do, who’s doing what, and what’s done. I used it to great effect this summer with my research students (here’s our public list).
Once students have got a cool feature working on their local machines I would just have to merge the repository and pull it down to the development machine (for now it’ll be physics.hamline .edu which is where all the examples above are hosted – eventually I would hope to get something like webapps.hamline.edu or something). That way I’d be the only one dealing with the production machine and any headaches that come with getting it working right. I really like how github would help with that (and how students can see the working code on their development machines without having to wait for me to get it up for the whole world).
I think it’ll be fun to work with students who are developing these types of skills. I think I’d be a little hands-off with dictating what we work on and how, but I’d probably stick to Laravel, Test Driven-Development, and mysql. If someone comes along with skills to get other approaches working, then sure! I got all excited about Meteor a few months ago but getting it to work on a server with ease of community-based updates was a big hassle (for me). So Laravel/PHP/MYSQL for us for now. I think that students who really put some effort into this will be able to easily sell their scripting and collaboration skills with some production code to show off.
So what do you think. This is really just a 2-day-old brainstorm for the moment. I’d love some help moving this project forward. Here are some starters for you:
- I love this. What I’d add is . . .
- I hate this. Instead you should . . .
- PHP?!??!! Why in the world would you expose students to that crappy approach? I’ve never heard of Laravel but I bet it’s a piece of crap built with crap.
- Why not Django? I suppose you’re too scared to ask your ITS to add yet another module to Apache, huh?
- Why not Meteor hosted on Galaxy? What are you, cheap?
- Ooh I’ve got some great ideas for apps. Where would I send them?
- Ooh I’d love to work on this. When are our meetings?
- I don’t understand. I love the apps on my (fill in a brand of phone here). Why don’t you just develop more of those?
- The photo/slideshow app you’re looking for exists. It’s called . . .
- This sounds like a better class than a club/group. I think it should be called . . .
- This should never be a class. Keeping it separate from students courses is smart.