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.
CSC108: Introduction to Computer Programming
Programming in a language such as Python. Elementary data types, lists, maps. Program structure: control flow, functions, classes, objects, methods. Algorithms and problem solving. Searching, sorting, and complexity. Unit testing. No prior programming experience required.
NOTE: You may not take this course concurrently with CSC120H1/CSC148H1, but you may take CSC148H1 after CSC108H1.
CSC120: Computer Science for the Sciences
An introduction to computer science for students in other sciences, with an emphasis on gaining practical skills. Introduction to programming with examples and exercises appropriate to the sciences; web programming; software tools. Topics from: database design, considerations in numerical calculation, using UNIX/LINUX systems. At the end of this course you will be able to develop computer tools for scientific applications, such as the structuring and analysis of experimental data. With some additional preparation, you will also be ready to go on to CSC148H1. Practical (P) sections consist of supervised work in the computer laboratory. No programming experience is necessary.
CSC148: Introduction to Computer Science
Abstract data types and data structures for implementing them. Linked data structures. Encapsulation and information-hiding. Object-oriented programming. Specifications. Analyzing the efficiency of programs. Recursion. This course assumes programming experience as provided by CSC108H1. Students who already have this background may consult the Computer Science Undergraduate Office for advice about skipping CSC108H1. Practical (P) sections consist of supervised work in the computing laboratory. These sections are offered when facilities are available, and attendance is required. NOTE: Students may go to their college to drop down from CSC148H1 to CSC108H1. See above for the drop down deadline.
PhySU Note: This course gives a much more thorough understanding to computer science in Python. Take this course if you already are familiar with CSC108 content and would like to be more comfortable with Python.
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.