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.

2. An opportunity to focus on Computer Science from day one. 
We’ve designed every year of the UOIT Computer Science program to include a rich selection of courses.

3. Exciting career-focused specializations.
We currently offer two specialization for Computer Science majors: Data Science and Digital Media. The courses in our Data Science specialization include: machine learning, big data analytics and information visualization. The courses in our Digital Media specialization include: mobile devices, advanced graphics, web development and interactive media.

4. A co-operative education option.
Students studying Computer Science at UOIT can enroll in co-operative education during their 2nd year of study. What makes co-operative education at UOIT unique is that our students typically have one work placement that is 12+ months in length (in addition to shorter placements). Having a longer work term provides students an opportunity to not only experience working for a company but also allows them to contribute and become active participants in that company. The reason? It often takes 2-3 months for a co-op student to get up to speed and be able to contribute therefore longer work terms mean less time getting up to speed and more time being actively involved.

5. Undergraduate research opportunities.
For undergraduate students interested in pursing graduate degrees (MSc, PhD) we offer opportunities to become involved in research labs through both Summer positions and research thesis projects.

6. Small class size.
While the UOIT Computer Science program has grown we have still been able to maintain a relatively small class size. In first year our Computer Science courses (CSCI course codes) are less than 100 students and in 3rd and 4th year our Computer Science courses are often 30-40 students. Also, most Computer Science labs are capped at 25 students. Having small classes and labs means more opportunity to know your classmates and your professors.

7. Hands-on, technology-enhanced, enthusiastic teaching.
The UOIT Act states  “It is the special mission of the university to provide career-oriented university programs…” [UOIT Act]. Our computer science faculty approach teaching with this in mind. For example, many of our courses have practical group projects that reinforce core computer science fundamentals. Some of the hands on projects include: iOS application development, database applications, compiler construction and web application development.
Starting in first year courses like CSCI 1060U: Programming Workshop I, we use social media technology including YouTube and Slack to enhance the learning experience.

Still looking for more information? Please visit the UOIT Computer Science website ( as well as check out some of our recent graduates’ views on UOIT Computer Science.

UOIT Computer Science photos

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

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.

Slack logoBefore Slack

Before using Slack, I typically communicated in the following ways with students in my classes:

  • Verbal communication both in class and during office hours 
    • Used by students to give feedback on lecture material, to follow up on points of confusion, to seek clarification, and to ask about personal interests that extend beyond the lecture topics.
  • Email
    • Used by students to ask about grades, deadline extensions, missed assignments and lab or to discuss schedule clarifications.
  • Learning Management System (LMS) discussion board
    • Rarely used by students but when used students often ask questions about specific assignments, labs, projects or tests.
  • LMS announcements
    • Used by me to broadcast schedule changes and reminders to students.

In general, I have found that students don’t use a LMS without considerable effort on my part to convince them that they must use it. I find students in my classes are very comfortable using instant messaging, chat programs and social media but are less inclined to give the LMS a chance. [Aside: there are good LMSs out there and for some students they can be great – but with my style of teaching and my students’ style of learning I haven’t found them to be successful.]

How I Use Slack IN My Classes

Adding Slack as an alternative communication channel increased the discussion between myself and students and increased the discussion amongst students (at least from what I’m able to observe). Why? I think the reason Slack works in my classes is that it operates just like the messaging clients today’s students already use and in addition to a web client it also has custom clients for all major desktop and mobile platforms. The custom clients and notifications allow students to more easily use Slack while doing other tasks.

There are many different Slack features that could be used to benefit learning in the classroom. In my first semester using Slack I found the follow features worked the best for me:

  • Public channels
    • I use separate public channels for major deliverables – tests, assignments, projects. A lot of the messages are questions-and-answers between students and myself but I also find a lot of student-student discussion happening as well. It’s nice to see students able to answer other student’s questions. When posting both questions and answers, code snippets and the file attachment option are often used to post supplemental information.
    • I use the #general public channel to answer general questions about lectures, course readings and any other comments/questions related to the genera course topic. The #general channel also gets used for posting interesting links and articles and can also serve as a backchannel discussion during lectures.
    • The #random public channel is not used a lot in my class (in my research lab it is much more popular). When it is used by students it is mainly for program-related messages (not class-related) and for posting humour.
    • Students add reactions to channel messages when they particularly like or appreciate something (I never received this kind of feedback with LMS or email announcements).Slack reaction
    • In my graduate course (CSCI 5010G: Survey of Computer Science) there are participation marks for attending external seminars and local conferences. Students will sometimes post pictures from events so that I’m aware of their attendance. For example:
      Message from students attending CASCON 2015
    • I usually mention a student’s name (using the @name tag) when responding to their message. The notification settings in Slack allow team members to differentiate alerts for messages that include a mention of their names from other general messages. When I need to make a broadcast announcement I use the @channel tag to alert all students of a message.
    • A colleague of mine (Dr. Christopher Collins) also uses Slack and has a great way to incorporate Slack communication into his lectures. He has a public @inclass channel and asks students to tag his name if they have questions. When he is alerted of a tagged message he can answer it in real-time to the whole class.
  • Private channels
    • Private channels mainly get used as team channels. I often teach software development courses that involve team projects and private channels are a great way to allow students to share project documents and engage in project discussion. I also encourage students to utilize the Slack integration with services like GitHub (if used in their course project).
    • If a course has multiple instructors and/or teaching assistants, a private channel is also a good idea for this type of private group communication.
  • Direct messages (DMs)
    • Individual or small group questions also occur through DMs. DMs have replaced a lot of the questions I used to get via email about grades and course material clarifications. Students who aren’t comfortable posting in public channels will sometimes use DMs instead.
  • Service Integration
    • GitHub integration was mentioned above for private team-based channels.
    • I also use Google calendar integration which has also cut my need to make course announcements about schedule changes and reminder announcements about upcoming class events. For each course I teach, I create a public Google calendar to share with the students. Most students appreciate a Google Calendar since our university uses Google Apps for Education and they all have university gmail accounts The Google calendar integration in Slack allows for automated reminders of upcoming events and announcements of changes to upcoming events. I used to send both of these types of announcements manually through our LMS.
      Google event announcement in Slack
  • Statistics
    • Even in the free version, Slack provides basic statistics that can be used to track student activity in a course. For example, in my course of 23 students there were a total of 116 messages sent last week with 37% in public channels and 63% DMs. The weekly stats summary for my course does not include private channel message statistics because there are no private channels (there are no group assignments).Slack weekly team statistics
    • One question I’ve been asked about using Slack in the classroom is: How many messages can I expect? The answer to this question varies greatly depending on the course content, the students and the availability of the instructor (both within Slack and outside of Slack). For example, at the University of Victoria Dr. Margaret-Anne Storey has a class of 40 students that has exceeded 10,000 messages.

After Slack – The Breakdown

When I started using Slack I kept all of the other communication channels (I didn’t want to try something new and not have a backup). With the semester almost over I’ve noticed that emails from students are down (DMs from students are up), the LMS discussion board has been 100% replaced with Slack public channels and while LMS announcements still happen (they are largely redundant with automated Google Calendar messages and @channel announcements in Slack). Finally, the biggest change is that I don’t have to try to get students to use Slack – they actually like it!

Using Slack summary

If you have feedback please leave a comment or contact me on twitter (@jeremy_bradbury).

A Canadian Guide to the Heartbleed Bug

What is the Heartbleed Bug?

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.

Bugs exist in almost all software and they rarely get the media attention received by the Heartbleed bug. Why? Well, most bugs don’t have the potential impact that this bug has on society. The Heartbleed bug affects:

  • User privacy: systems that are affected can share personal information about users. For example, the Canada Revenue Agency (CRA) had 900 social insurance numbers stolen because of this bug.
    :: Personal data stolen from CRA website using Heartbleed bug [Globe & Mail]
  • Software and services availability: in some cases systems that are affected have to be taken off-line in order to fix the bug and to protect user data. For example, the CRA temporarily shut down their major web services last week.
    :: Canada Revenue Agency online services may be shut down until the weekend [The Star]
  • Monetary losses: besides the cost of rapidly patching this bug and securing affected systems there is a potential for companies impacted by the Heartbleed bug to face monetary loses as a result of a decrease in consumer/user trust.

Continue reading

What’s New for Concurrency in Java SE 8?

Java SE 8 Java logo 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

A Computer Science Professor’s Backpack

Every morning I read through my favourite technology blogs and one series of blog posts that I confess to enjoying are the Featured Bag posts on Lifehacker. These are basically a series of posts where different people from different jobs/walks of life describe the kind of bag they use and what they keep inside it. I find this interesting because I’m always looking for ways to ensure that what I carry to and from work, to research meetings, and to conferences is lightweight and maximizes functionality. A collection of user submitted bags/backpacks can be found on the Lifehacker Go Bag Show and Tell (hosted on Flickr).

So with that said here is my backpack:

My Backpack Continue reading

Advice on Finding Relevant Research Papers

One of the questions I often get asked by new research students in my lab is how can they find research papers that are relevant to their thesis. For a student new to research this can be a very daunting task and doing a straight Google, Bing or Yahoo search generates a lot of noise (i.e. irrelevant content, non peer-reviewed papers, etc.).

The first advice I usually give is where to start searching. There are a number of academic-specific search engines that provide good results from a wide variety of researcher, publisher and academic websites. For example: Continue reading

Interesting Quotes from AMD Canada Event


On March 7th of last year I attended an OCE event called the “AMD HSA and Heterogeneous Computing Research Showcase.” I recently came across my notes from the event and I thought a few quotes from the keynote speaker, Phil Rogers from AMD Canada,  were worth sharing.

Phil Rogers on AMD’s commitment to open industry standards:

“open standards always win over time.” 

Phil Rogers on programming with threads:

“An expert can get two threads right. An expert can sometimes get three threads right… but cannot get all of the test cases right… doesn’t scale (to 100s of threads).”

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 how useful different SE technologies are, for different kinds of actors, performing different kinds of activities, on different kinds of systems. Such scientific knowledge should guide the development of new SE technology and be a major input to important SE decisions in industry and services.”

– Dag I. K. Sjoberg, Tore Dyba, Magne Jorgensen. The future of empirical methods in software engineering research. In Proc. of ICSE 2007, Future of Soft. Eng. (FOSE ’07), pages 358-378, 2007.
Continue reading