Matt Schlosser

About Me

I have always had an interest in computers and electronics. I began teaching myself the fundamentals of web design at 12 years old. In 2015, I began studying computer sciecne at Grande Prairie Regional College. In 2019, I gradauted with a Bachelor of Science With Specialization in Computing Science with Distinction from the University of Alberta.

Below is a summary of the courses I took, with some highlights of the work accomplished for each.

Courses from GRPC - Grande Prairie Regional College - 2015 - 2017

CS 1740 - Introduction to Computing Science

An introductory course. The language taught was Java. We used Java to construct basic data sturctures, etc.

CS 1750 - Introduction to Computing Science II

Further builds on the skills learned in CS 1740. Basic data structures, such as linked lists, trees, hashing functions.

CS 2010 - Practical Programming Methodology

Learning the ins and outs of the C/C++ language. Pointers, functions, arrays, classes, structs, etc.

CS 2290 - Computer Organization and Architecture I

Learning of MASM assembly of Intel x86 processors and the general structure of a CPU. From the GPRC website: General introduction to number representation, architecture and organization concepts of von Neumann machines, assemble level programming, exception handling, peripheral programming, floating point computations and memory management. image image image image

CS 2910 - Introduction to File and Database Management

A basic introduction to databases. Used MariaDB and some sqlite3. Also an introduction in in-memory databases such as Redis. Basic database design, normal forms, and learning the SQL language.

CS 3290 - Computer Organization and Architechture II

Logic gates and the like. Logic reduction of Hands on projects focues on learning the applications. Built a basic cpu architecture. It had four registers, memory, an ALU, etc.
Final project for CS 3290

CS 3010 - User Interfaces

An introductory course to building user interfaces. Topics in HCI, to how physical input devices connect to the computer, to developing software with GUIs. We used JavaFX to build a basic paint application.
Final project for CS 3010

CS 3120 - Experimental Robotics

Using arduions to build robots! Line following, path finding, using digital and analog sensors, filtering sensor data, basic compenent interactions (SD cards, etc).

Here is an example of one of the tasks we had to complete, parallel parking: To see more, go to

CS 3110 - Introduction to Computer Graphics

Building basic 2D and 3D scenes. Introduction to shaders, 3D matrix transformations, and using WebGL.
Final project for CS 3110
To see the whole final project, go to Other projects from this course:

Courses from University of Alberta - 2017 - 2019

CMPUT 204 - Algorithms

Standard fare of data structures, including but not limited to: linked lists, trees, red-block trees, heaps, min-heaps, minimum spanning tree, hash tables, and graphs. Also runtime analysis.

CMPUT 325 - Non Procedural Programming Languages

Learned two new progarmming languages: PROLOG, and Lisp. (PROgramming in LOGic and LISt Processor, respectively). PROLOG has application in pattern matching, solving puzzles, etc.

CMPUT 391 - Databse Management Systems

More hardware focused approach to databases. How data is stored physically on the disk, indexing, and recursive SQL queries.

CMPUT 379 - Operating Systems

Leaerning the tasks an operating system must do, such as CPU task scheduling, ahndling memory, paging, threading, and methodoligies to deal with threading issues such as race conditions, spin locks, etc.

CMPUT 415 - Compiler Design

learned the tools used in today's industry to build a modern compiler. Using tools such as ANTLR4 for language parsing, and LLVM as a targeted output, we built, in teams, a compiler for a language, complete with function calls, declare and assignment to variables, pass by reference, type definitions, and more.

CMPUT 340 - Numerical Analysis

Math heavy course based on matrices. Methods used to approximate numberical methods with a computer, and how to measure the error of such an approximation.

CMPUT 398 - Parallel Programming

An introductin to programming on a GPU. The class focused on the CUDA language for NVidia cards.

CMPUT 366 - Artifical Intelligence

An introductory course to artificial intelligence, agents, reinforcemnet learning, machine learning, Markov decision processes, etc.

CMPUT 466 - Machine Learning

A advanced course in machine learning. Worked on a project with the City of Edmonton to predict the attendence of a given rec facility one week in advance.

Other Disciplines:

Other courses I took while in my undergrad