Department of Physics and Astronomy · Western University

Denis Vida

Adjunct Research Professor · Research Scientist

Sky:

Teaching

I have taught two graduate courses at Western, on scientific programming in Python and on machine learning in astronomy, and all their materials are free on GitHub. I also supervise students in my group and mentor students through outreach programs.

How I teach

My main teaching goal is that a year after a course, students can still describe its main ideas and know where to find the books or online resources that let them use the material quantitatively again. My lectures therefore focus less on memorizing and reproducing proofs and more on a solid understanding of the underlying physical concepts.

Most lessons follow the same pattern: a short piece of theory, a worked example, and then a task the students do themselves, often helping each other. I ask for anonymous feedback after every lecture (what was great, what could be better) and adjust as the course goes on. I try to set up an environment in which we tackle the material together, as equals.

I put computation into every course I teach. Much of modern physics and astronomy is a matter of implementing a physical model and letting numerical methods use large amounts of data to answer the big questions. I aim to train “π-shaped” people: scientists with broad general knowledge and deep expertise in two areas, typically their science and computing.

Courses

CourseLevelTermMaterials
Astronomy 9506S: Data Mining and Machine Learning in Astronomy
Seven lectures on data handling, fitting, maximum likelihood, Monte Carlo errors, unsupervised and supervised learning and neural networks, followed by a self-directed project in which each student applies the methods to a problem from their own research. Weekly stand-ups and co-working sessions.
GraduateWinter 2023 GitHub
Astronomy 9505Q: Scientific Programming in Python
I started this course in 2017 as an unofficial graduate course; it became an official course in the department, Astronomy 9505Q, in 2022. Ten lectures on scientific computing: Python basics, file handling, numpy and plotting; regression (least squares, RANSAC, Theil-Sen), minimization and fitting of non-linear models; numerical integration, interpolation, Fourier transforms, signal processing and wavelets; object-oriented and parallel programming, Cython; and astronomical applications with astropy and astroquery. Faculty members attended as well as students.
Graduate2017–2022 GitHub

Student feedback on my courses has been overwhelmingly positive.

Open course materials

All lecture notes, code and exercises are on GitHub under the MIT licence, free for teaching or self-study (Python course, machine learning course). Homework includes estimating the age of the universe from a galaxy catalogue and predicting asteroid albedos.

How I mentor

I treat every student as a full member of the group from the first day, with a real problem to own. I choose projects so that the work ends up in use: in a paper, in the GMN or contrail pipelines, or in tools our partners rely on. A meteor flux method written by an undergraduate in my group is now used by NASA's Meteoroid Environment Office, and many students co-author our papers.

I want students to leave with skills that serve them whichever way they go: careful science with honest uncertainties, but also software engineering, working with external partners, and explaining results to non-specialists. Former members of the group have gone on to PhD programs at Cornell and Western, to software and data engineering, to finance, and to co-found their own company (see the group page).

Talent is distributed equally, but opportunity is not. I make room in the group for students who would not otherwise have a way into research, through programs such as B.L.U.E. and the GMN Outreach Project.

Mentoring and outreach

I got into science through a volunteer astronomy club in a small town in Croatia, and I try to give students in a similar position the same chances I had.