My current research focus is on understanding the underpinnings of human learning, with an emphasis on how word knowledge is acquired. I am particularly interested in ways that the acquisition of word knowledge can be modelled computationally. My work joins theories of learning and knowledge representation from psychology with natural language processing methods from computing science. My publication history and research interests are available for those interested in reading my
academic work. You can also find my public academic profile at ResearchGate. The most recent version of my curriculum vitae can be viewed here.

I currently offer courses in cyberethics and introductory computer programming through the Computing Science department at the University of Alberta. I previously taught through the Psychology department where I offered courses on: social behavior, perception, thinking and reasoning, and research methodology. I believe that knowledge is most readily assimilated when learners are actively immersed, or are engaging in hands-on activities. I do my best to structure my courses with this in mind. You may view student evaluations of my teaching at RateMyProfessor. They generally converge on my teaching strengths and weaknessess.

A dominant viewpoint for the past 70 years has been that there is something "special" about language as a skill vs. other skills. Why else would so few species have it? This viewpoint suggests that language cannot be acquired by the same learning processes that accounts for other types of learning. Recently, people have begun challenging this viewpoint and have demonstrated that, in fact, quite a few phenomena in language acquisition can be accounted for by theories of animal learning. I have written some (Python) software for using a particular theory of animal learning, called the Rescorla-Wagner model, to simulate how humans acquire language. You can view and download this software from github.

Best-worst scaling is a response format that can be used to infer ordinal relationships between large sets of items. I have done some work here and here demonstrating how to use best-worst scaling for collecting semantic norms, and comparing the resulting data to other common response formats (e.g., rating scales, numeric estimation). Best-worst scaling shows promise as an efficient data collection tool; that efficiency can be very important when one is collecting data over tens of thousands of items. If you are interested in collecting semantic norms, I suggest you read my manuscripts on best-worst scaling. My software for conducting best-worst research is available here.

The above mentioned work using best-worst scaling to collect semantic norms does have its limitations. Relying on human judgment is not efficient when =when estimating semantic properties of many stimuli (e.g., every word in a language). In such cases, it may be more useful to use computational methods to extrapolate semantic properties. I have some papers touching on this topic, with this one being the starting point. In it, we computationally generated valence, arousal, dominance, and concreteness estimates for 78,000 English words. We have since extended this work to include computationally estimated age of acquisition estimates, and an extra 10,000 words in the stimulus set. The full dataset can be found here.

It is very difficult (impossible, depending on your theoretical framework) to
find a construct in psychology that has an independent effect on behavior.
Everything one thing that drives our behavior is influenced by everything else.
The Naturalistic University of Alberta Nonlinear Correlation Explorer
(Nuance)
is a tool for modeling how variables relate to each other in affecting
behavior, as opposed to figuring out how they affect behavior when isolated.
A handful of my publications make use of Nuance.

LINGUA (Language-Independent Neighbourhood Generator of the University of
Alberta) is a free, Java program developed for three purposes: to turn corpora
into frequency dictionaries; to calculate orthographic neighbourhood and N-gram
counts; and to generate plausible nonwords in an algorithmic way. As its name
suggests, it has been specifically developed to be language-independent, and is
able to handle input corpora in a wide range of text encodings.

I like playing games. But more than playing games, I like designing games and
exploring the dynamics of game systems. NakedMud is
an open-source game engine I
have designed for making online multiplayer text-based games (MUDs). One such game that I've made is accessible via (the very oldschool) telnet, here. MUDs are
the predecessors to modern online games like
World of Warcraft, among
others.
I am particularly intrigued by the dynamics of social systems, and online multiplayer games provide an interesting glimpse into social behavior.