Planning Your Coding and Lab Courses

Coding Courses

Although these courses are not required for any Physics POSt, they provide excellent introductions to Python. Lab courses (e.g. PHY224) rely very heavily on Python for data analysis and simulation. Although the basics of Python are taught within the lab course, we have been told by many students over the years that taking a Python course prior was beneficial.


Lab Courses

The following courses provide you with the skill sets that are not only extremely helpful in a lot of fields of research, but are also highly transferable to other disciplines:


PHY405 - Electronics Lab: This is the only course in the physics program that offers hands-on opportunities for working with electronics. Through both lectures and practical sessions, students will learn about designing, building, and prototyping analog and digital circuits. As a PHY course, the topics covered in this course are more oriented towards working with instruments in experimental physics, such as detectors, signal filters, and controllers. 


What should you expect to gain from this course: Knowledge and experience in electronic circuits. The day-to-day work of an experimental physicist overlaps strongly with an engineer, except that experimental physicists build their projects to answer scientific questions, instead of to necessarily address real-world problems. This course provides a glimpse into that kind of day-to-day work.


PHY407 - Computational physics: This course teaches about methods and algorithms to simulate any physical system. This course also covers some fundamental computational techniques to complete numerical simulations to help us understand systems that are hard to model analytically, with physics only being the motivation for those topics.This course uses Python as the primary and only language, with extensive use of Python packages such as numpy, scipy, and matplotlib. 


What you should do to prepare: Having a strong understanding of Python fundamentals is recommended. The Python knowledge needed highly overlaps with the course contents of CSC108, but students typically have that knowledge by the time they finish PHY224. A huge part of this course’s assignments are implementing and debugging computational tools learned from the course. Therefore, getting comfortable with Python and learning a proper coding etiquette will make your life in PHY407 much easier. 


What should you expect to gain from this course: Knowledge of computational methods including but not limited to numerical integration, differentiation, solving ODEs and PDEs, Monte Carlo methods, Fast Fourier Transform. Monte Carlo methods are heavily used in high energy, particle, and nuclear physics simulation softwares. Fast Fourier Transform has wide applications in signal/data/image processing, as well as n-body simulations. The other methods are used as often as their analytical counterparts.


PHY408 - Time Series Analysis: The aim of course is digitally analysing a given set of data. In experimental physics, experimental data often are gathered in forms of digital signals varying through time and/or space. This course will help you decipher those signals. What you should do to prepare: This course is less demanding than PHY407 in terms of programming skills. Basic knowledge in manipulating numpy arrays and making plots should suffice. The best way to prepare for that is through doing coding projects. Lab courses like PHY224/324 supply a good amount of those. 

What should you expect to gain from this course: The knowledge gained from this course is crucial to studies involving digital detectors, but can be applied to anything that can be considered as a series. Examples range from particles to seismic waves, from stock market trends to automatic pattern recognition, from biology to electrical engineering, and so on.