
Home > Courses > 5P10

PHYS 5P10
 Introduction to Scientific Computing

In Matlab/octave you may need to install into your own filespace packages that you want to use, if they are not provided by the systemwide installation. Here are a few useful commands:
pkg list
 list all available packages
pkg install forge xyz
 install the current version of the package from the standard repository
pkg install xyz.1.2.3.tgz
 install a particular version of the package, predownloaded from
https://gnuoctave.github.io/packages/ . Sometimes, your octave installation may not be compatible with the latest version available; in this case, search and download the version that is compatible, by following the Version History link that shows all available versions and their compatibility.
pkg load xyz

once installed, a package needs to be loaded into your current workspace. This command needs to be issued every time, for packages installed in your own filespace. In contrast, the installation (see above) need to be done only once. It might be convenient to install packages from a full octave run, without performing these onetime steps in your jupyter notebooks.
These are previously made announcements:

Welcome to the home page of PHYS 5P10
. Watch this space for important announcements.
 This course can be taken as PHYS 5P10 or MATH 5P69, and by undergraduates as PHYS 4P10. The courses will be differentiated by levelappropriate expectations in the preparation of reports and projects.
 Be sure to review this statement on academic integrity
 To help you plan, the important dates of the current academic year are listed here.
 Lectures: Mo Th 12:0013:30 in MC H300.
 All lectures will be conducted in the form of a lecture/tutorial, with each student performing the actions modeled by the instructor.
 Lectures will be posted in Lectures, both as .ipynb notebooks and as [noninteractive] .html files, if you do not have jupyter installed (it is installed on all computers in the Physics Department).

Although most of your homework will be submitted in the form of
jupyter notebook , highquality output will require
some knowledge of LaTeX. Also, you are expected to prepare final project report using LaTeX. LaTeX is available on all computers in
Physics labs, and online at overleaf.com.
In preparation, students are encouraged to open overleaf accounts. Some useful resources for writing reports are here, and will be reviewed in class.

Please submit your homework via email to edward dot sternin at brocku dot ca.
Attach (do not include in the body of the message) *.m,*.c, Makefile *.ipynb etc.
files as necessary. Make sure the jupyter notebook or the comments in the code
contain your Brock computer ID/email as the identifier of the author. Do not use your student number
as an identifier, it is to be kept private.
 Late homework submissions are penalized by a sinking cap of 15%/day, so assignments that are 2 days late cannot get a grade higher than 70, etc.
 Monitor your grades through the Marks link on the left.

Those of you using a VirtualBox installation of Linux on your laptops note that you need to install Jupyter notebook as an addon product. You may also want to install a few useful other things in one go:
sudo aptget install jupyternotebook jupyternbconvert buildessential gnuplot pip

Whether on your own VirtualBox, or on one of the Physics Department workstations that is missing a systemwide installation, the addon of
gnuplot_kernel allowing you to run gnuplot from within a jupyter notebook directly, requires a pythonbased installation into your own personal space:
pip3 install gnuplot_kernel
What Brock calendar entry says (slightly revised for the current calendar):

Survey of computational methods and techniques commonly used in condensed matter physics research; graphing and visualization of data; elements of programming and programming style; use of subroutine libraries; common numerical tasks; symbolic computing systems. Case studies from various areas of computational physics. Disciplinespecific scientific writing and preparation of documents and presentations.
What do I need to bring into the course?
 This course is a core course of the MSMP program, and is recommended to all Physics graduate students. Basic familiarity with Linux is assumed, and will be reviewed briefly.
Course Goals
 to develop a working knowledge of interactions with Linux OS
 to become proficient in experimental data graphing and numerical analysis
 to gain working knowledge of program development
 to become familiar with one or several interpreted programming environments, and to acquire basic scripting skills
 to become proficient in LaTeX and use it for scientific papers and presentations
Textbook
There is no formal textbook for the course. A number of online resources are available and can be used as reference material for the lectures. Some of these are:
This list will grow as the course progresses.
Component 
% of the final mark 
Notes 
Projects 
70% 
Six (or seven, time permitting) extended projects. Project submissions should be made in the form of a jupyter notebook file, via email to the instructor. 
Final presentation 
30% 
One of the projects (selected at random) submitted in the form of a scientific journal submission,
using Phys. Rev. or Can. J. Phys. format, and presented inclass as a research seminar. 
This is an approximate outline. Topics not on this list may get covered as time permits.
 A common toolbox
 interacting with the OS; CLI vs GUI
 Linux as a collection of small tools + pipes between them
 the basics of programming: shell, C, scripting languages
 code development: edit, compile, run, make and Makefile structure, elementary debugging, linking to program libraries
 visualization with gnuplot and other graphing tools
 Numerical methods
 Numerical differentiation: finite differences, interpolation, root finding
 Numerical integration: special functions and quadrature
 Solution of Ordinary Differential Equations: EulerCromer, RungeKutta
 Linear algebra: methods of solving systems of equations and eigenvalue problems
 Stochastic Methods:Random number generators, importance sampling, Molecular dynamics, MonteCarlo techniques
 Case Studies/Projects
 Leastsquares problem: experimental noisy data, noise distribution and filtering, importance of baseline, assumption of Gaussian noise, chisquared; classification of LS problems, regularization and selection of lambda. Test case: a spectrum of exponential relaxation rates
 Molecular modeling: protein database data, force fields, GROMACS simulation package. Test case: a lipid bilayer with cholesterol guests (T.Harroun)
 Models of solids: Ising model, magnetic moment, temperature, heat capacity, Metropolis' algorithm. Test case: magnetic transitions in an Ising lattice
 Image Analysis: filtering to remove noise, segmentation to isolate regions and objects of interest, regional and spectral analysis to extract statistical data. Test case: spatial frequency distribution of a line image

