Safety, Testing and Self-Driving Cars

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 injuryContinue reading “Safety, Testing and Self-Driving Cars”

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. ManyContinue reading “Automating Software Development Using Artificial Intelligence”

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 andContinue reading “Adaptive Serious Games for Computer Science Education”

Using Slack in the Classroom

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 isContinue reading “Using Slack in the Classroom”

A Canadian Guide to the Heartbleed Bug

What is the Heartbleed Bug? The Heartbleed bug is a recently identified bug in the¬†OpenSSL¬†security protocol toolkit. OpenSSL is widely used on web servers to encrypt user data.In general, software bugs are computer program error that cause the software to behave in an unexpected way (e.g., crash, produce a wrong output). Security bugs are aContinue reading “A Canadian Guide to the Heartbleed Bug”

Hiring attributes used at Google

Today I read an op-ed article in the New York Times titled “How To Get a Job at Google”. The article cites an interview with Laszlo Bock, Google’s Senior VP of People Operations, and identifies the five hiring attributes that Google considers when evaluating potential job applicants:

Empirical Methods Should Guide the Development of New Software Engineering Tools

The following quote is one of my favorite quotes regarding the right way to conduct Software Engineering (SE) research. It summarizes the importance of utilizing empirical methods to inspire and guide the development of new SE tools and techniques: “In all fields of SE, empirical methods should enable the development of scientific knowledge about howContinue reading “Empirical Methods Should Guide the Development of New Software Engineering Tools”

Predicting Mutation Scores

Last week my MSc student, Kevin Jalbert, presented his early thesis results at the Workshop on Realizing Artificial Intelligence Synergies in Software Engineering (RAISE 2012). The workshop took place in Zurich Switzerland and was colocated with ICSE 2012. The title of the presentation (and the paper that appears in the proceedings) was “Predicting Mutation Score Using SourceContinue reading “Predicting Mutation Scores”

Good Resources for Learning to Program with Concurrency

With the increase in multicore processors there has been an increase in demand for concurrent programming and an increase in books and resources that focus on programming with concurrency. Below I will outline some of the books on my own bookshelf that have been useful.

Static Analysis Tools for Concurrency

FindBugs – works on Java. In the list of bugs detected all of the “Multithreaded correctness” bugs are relevant to concurrency. Command-line interface or eclipse plugin (eclipse plugin update site:http://findbugs.cs.umd.edu/eclipse/) Lint – a UNIX tool for C JLint – a Java version of Lint that is available as stand alone or eclipse plugin (eclipse plugin update site:http://www.jutils.com/eclipse-update) ParasoftContinue reading “Static Analysis Tools for Concurrency”