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 than 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.
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:
- Automation of software development activities including the creation of software artifacts (e.g., software test generation)
- 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?
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:
- 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.
- 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).
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
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.
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.
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 a special kind of bug that can lead to a security vulnerability which allows the software system or the data stored in the system to be accessed in a way that was unintended.
Java SE 8 was officially released yesterday (March 18th) and given the fact that Java 7 was released back in 2012, there are definitely lots of updates and new features. These updates include improvements to the Java language itself, Java security, Java tools and more. Although a lot of these updates are interesting and important I am specifically interesting in exploring: What’s new for concurrency?
Based on the release notes the concurrency-related additions are: Continue reading