The course takes students who've been introduced to programming or design, and teaches them how to work with others to build things that are bigger than they can build themselves. Version control, continuous integration, test driven development, API design, all the fun of the fair.
We put teams of students on "supercollaborative" projects. The students work in teams, developing features for a common project. Online we're looking to put ten students to a team, and fifty teams per project — yes, that's 500 students on each project.
We don't just throw students in at the deep end and watch them flounder. Alongside the project are videos and tutorials teaching them what they need to know to succeed. And there are systems, communities, and regular peer critiques to help keep projects in shape and on track. The projects get underway in week 4, so students don't have to hit the ground running, and groups can already see who's active.
By the end of the course, students haven't just got a certificate, they've also built something pretty cool. In 2013, our on-campus class of 140 students (31 teams of 4 or 5 students) built a Steam-like games arcade, complete with achievements, multiplayer, action replay, and lots of games.
We've taught this course on campus at The University of Queensland since 2011. But even on campus we make a point of using cloud services, and reminding students that there's much more useful content out there than just what we produce. So as we take it online, we want it to be bigger than just us.
Surely, if we're teaching students the collaborative nature of programming, we should do it collaboratively.
We're not the only voices we'd like our students to hear from. We'd welcome contributions and comments on the videos, the exercises, and the syllabus.
The teaching page has a rough outline, which will expand with scripts, videos, and then exercises and tasks.
There's lots of systems we need for this course, for the teaching and for the project, and we'd appreciate contributions and help.
The platform page has a very rough outline of our plans.
On campus, we use GitHub and Jenkins for hosting the student project. But if you're a cloudy collaboration company and would like to help out, we'd love to hear from you.
And if you're just a more experienced software engineer (more experienced than a student), we think it'd be pretty cool if you joined a team and helped mentor them.
Again, please raise tickets on things you'd like to see changed, or contact us via twitter or email.
We're looking for students at all levels of experience to take part. Whether you've just taken a first programming course and are now looking to program with others, or whether you're a practiced engineer who's interesting in mentoring or leading a team, we hope you'll be interesting in taking part.
We haven't set a go-live date yet, so follow us on Twitter and sign up for the mailing list, and we'll keep you updated. We'll be recording lots of content for the on-campus course over the next couple of months, and you'll see that appearing here too.