Serious Programming Games

In 2018, we published a review of 49 serious games for learning how to program:

For each game we assessed the programming content of the game using the ACM/IEEE-CS Joint Task Force on Computing Curricula: Computer Science Curricula 2013. We also assessed how each game was evaluated both in terms of the research methods used (e.g., surveys, formal interviews, skill tests, etc.) and the research questions asked:

  • Did the users have positive feelings about the game?
  • Was the game accessible?
  • Were the users engaged while playing the game?
  • Was there a learning effect from playing the game?

Continue reading “Serious Programming Games”

Safety, Testing and Self-Driving Cars

Tesla S Autopilot [Photo credit: Marco Verch, used under CC BY 2.0]

Any system where erroneous behaviour can lead to serious injury or a potential loss of life is classified as a safety critical system. This is true for self-driving or autonomous vehicles where a vehicle malfunction can lead to the injury or death of the driver, passengers or others outside the vehicle. The potential for injury or death is why it is paramount that the developers of self driving vehicles ensure the systems works safely before deploying them to users on public roads. In the field of self-driving vehicles, it is not clear if this best practice is always being followed. While self-driving vehicles are testing extensively using computer simulation and closed circuit test tracks, they are also tested on public roads. For example, driver assistance systems like Tesla’s Autopilot have been beta-tested by real users. Fully autonomous vehicles such as Uber’s self-driving car have also been tested outside of controlled settings on public roads. In cases where testing occurs in public, the vehicle-under-test is surrounded by pedestrians and drivers who may be completely unaware that their interaction is helping to test and improve an autonomous vehicle. This was the case on March 18, 2018, in Tempe, Arizona when Uber’s self-driving car, with a human driver present, hit and killed a pedestrian (see SFGate).

More recently, news reports highlighting crashes of Tesla vehicles with semi-autonomous and autonomous capabilities have again brought the issues of safety and testing to the forefront. “Three crashes involving Teslas that killed three people have increased scrutiny of the company’s Autopilot driving system, just months before CEO Elon Musk has planned to put fully self-driving cars on the streets” (see CBC). It is important to note that unlike Uber’s self-driving car, a Tesla with Autopilot is not a fully autonomous driving system – “…Autopilot is a hands-on driver assistance system that is intended to be used only with a fully attentive driver. It does not turn a Tesla into a self-driving car nor does it make a car autonomous” (see Tesla website). The two main features of Autopilot are Traffic-Aware Cruise Control, for matching the vehicle’s speed to traffic, and Autosteer, for steering within a specific lane. Navigate on Autopilot is a Tesla beta feature which autonomously controls lane changes and highway interchange and ramp navigation.

Continue reading “Safety, Testing and Self-Driving Cars”

The 20th Anniversary of Y2K

Jeremy Bradbury on Global News Durham (copyright Global News Durham)
Prof. Jeremy Bradbury on Global News Durham [photo credit : Aaron Streck, copyright: Global News]

“Y2K is a great case study that we can use to talk about best practices for how we develop software today.” SQR Lab leader Prof. Jeremy Bradbury was interviewed recently by Aaron Streck of Global News Durham for the 20th anniversary of the Y2K (Millennium) bug. You can watch the news segment and read the article here.

How to Succeed (and Fail) at Interdisciplinary Research

On May 3, 2018 I gave an invited talk at the 9th Annual Graduate Student Research Conference at UOIT. The topic of my talk was “How to Succeed (and Fail) at Interdisciplinary Research.”

Interdisciplinary research is defined as research that involves multiple areas of knowledge and expertise.

As graduate students, researchers are often trained to develop expertise in only one specific area and those interested in interdisciplinary problems usually need to collaborate to be successful.

In this talk I shared my own experiences with interdisciplinary research and I highlighted my own observations on how to both succeed and fail at research that spans multiple knowledge areas. Challenges with interdisciplinary communication, collaboration, funding, publishing and reviewing were all explored. To find out more please see my presentation slide deck.

Continue reading “How to Succeed (and Fail) at Interdisciplinary Research”

Automating Software Development Using Artificial Intelligence

This week I gave a research seminar at Dalhousie University and at Mount Allison University on “Automating Software Development Using Artificial Intelligence (AI).” The intersection of AI and Software Engineering is an active research area and has lead to a number of effective and novel applications of machine learning, metaheuristic algorithms and deep learning. Many of these applications of AI to software development can be categorized as:

  1. Automation of software development activities including the creation of software artifacts (e.g., software test generation)
  2. Recommendation systems to assist software developers improve their performance (e.g., recommended code for review)

Not all Software Engineering research problems can be suitably addressed by AI techniques. A good first step to determine if a given software development problem can be addressed with AI is to see if it can be re-framed in terms of optimization, classification, prediction, etc. That is, can it be re-framed in terms of the type of problems that AI methods are effective at solving?

To find out more about the Software Quality Research Lab‘s work in this area please see the abstract and slides from my talk below.

Continue reading “Automating Software Development Using Artificial Intelligence”

Recording Programming Activities in the Classroom

Background

Before I detail how I video record in-class programming activities I want to provide some context. I’ve been teaching introductory programming courses for close to 10 years and  most recently I instructed a first-year first-semester course called CSCI 1060U: Programming Workshop I. My general philosophy on teaching programming is based on two simple rules:

  1. Learning programming should occur through doing not through seeing. In my experience active programming activities are a much more effective way to teaching then passively showing already written code on a PowerPoint slide.
  2. Never teach an example that you can’t program yourself in the classroom. This rule helps me avoid the use of overly complex examples that maybe difficult to follow (which is an easy way to demotivate students who are new to programming).

In introductory programming courses I like to supplement and reinforce new programming concepts with:

Continue reading “Recording Programming Activities in the Classroom”

Top Reasons to Study Computer Science at UOIT

[Undergraduate Edition]

5 years ago I wrote a blog post titled Top 4 Reasons to Study Computer Science at UOIT. Since then a lot has changed and I thought it was time to write an updated post!

I have participated in UOIT recruitment events for the past 10 years and I have answered a lot of questions from potential students and their parents. One of the most common questions that I get asked every year is:

Why should I choose to study Computer Science at UOIT?

In my opinion here are the benefits of UOIT’s Computer Science undergraduate program:

1. Reputation and national ranking.
In the 2017 Maclean’s university program rankings, Computer Science at UOIT was listed nationally as a top 10 Computer Science program (4th in Ontario). Started in 2005, UOIT Computer Science was the youngest program included in the rankings and UOIT was also the smallest university to be ranked as a top Computer Science institution. It’s often easier at a smaller university to receive a more personalized educational experience – one where you know your classmates and your professors.Continue reading “Top Reasons to Study Computer Science at UOIT”

Adaptive Serious Games for Computer Science Education

PhD student and SQR Lab member Michael Miljanovic was selected as a finalist in the  2017 Three Minute Thesis (3MT) competition at UOIT. Michael’s 3MT talk discussed his PhD research into the use of adaptive serious games to improve Computer Science education. The goal of his research is to adapt games to an individual player in an effort to improve learning and engagement.

Using Slack in the Classroom

Slack logo

This semester I decided to try using Slack as an alternative communication channel in an upper-year university course that I teach. I’d already been using Slack in my research lab and I was familiar with the features and I thought it might translate well to the university class setting. The one disclaimer I would offer to anybody considering using Slack is to make sure that you use any technology to improve learning don’t just use technology for the sake of it.

Continue reading “Using Slack in the Classroom”