Skip to content

A series of programming tutorials in Python aimed for physicists.

Notifications You must be signed in to change notification settings

Sampreet/python-for-physicists

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Python for Physicists

Code Size Last Commit

A complete series for programming in Python aimed to suffice simulation and visualization requirements in Physics.

Python is an interpreted, high-level, general-purpose language supporting object-oriented programming with more emphasis on code-readibility and extensibility. It has a wide range of applications and is the backbone of widely-used scientific computing libraries like TensorFlow, and even stand-alone applications like Blender.

This series gradually traverses from basic to advanced topics of Python for numerical simulations, deriving analytical expressions and visualizing results pertaining to the area of physical sciences. These tutorials and their corresponding notebooks are clubbed into different modules based on the topics covered in the modules folder.

Beginner-level Topics

The course starts with setting up Python with a brief introduction to the ecosystem and the development environment in Module 01 - Getting Started. Next, the basic data-types of python as well as looping and function representations are covered in Module 02 - Fundamentals of Python. Module 03 - Visualizing Data introduces the powerful library Matplotlib and Module 04 - Scientific Computing illustrates the working of numerical libraries Numpy and SciPy. Finally, usage-oriented practices that speed up and help in debugging are hinted in Module 05 - Best Practices. The individual topics covered in this level are:

Topic ID Topic Name Tutorial Notebook
M01T01 Setting Up Python link
M01T02 The Python Interpreter link
M01T03 The Spyder IDE link
M01T04 Jupyter Notebooks link
M01T05 Python in VSCode link
M02T01 Constants and Variables
M02T02 Tuples and Lists
M02T03 Dictionaries and Sets
M02T04 Strings and Formatting
M02T05 Conditional Statements
M02T06 For and While Loops
M02T07 List Comprehension
M02T08 Functions and Lambda Expressions
M03T01 Matplotlib
M04T01 Numpy
M04T02 SciPy
M05T01 Importing Modules
M05T02 Logging Events

Intermediate-level Topics

With the basics covered, the course jumps into a few more plotting and computational libraries in Module 03 - Visualizing Data and Module 04 - Scientific Computing. Next, Module 05 - Best Practices introduces object-oriented programming, exception handling and ways to parallelize and speed up the code. Module 06 - Machine Learning and Module 08 - Quantum Computingthen highlights two rapidly growing areas, introducing crude learning paradigms and concepts pertaning to quantum computing. The individual topics covered in this level are:

Topic ID Topic Name Tutorial Notebook
M03T02 Plotly
M03T03 Seaborn
M04T03 Pandas
M04T04 SymPy
M05T03 Objects and Classes
M05T04 Handling Scenarios
M05T05 Parallelism
M05T06 Speeding Up link
M06T01 Bayesian Probability
M06T02 Regression Analysis
M06T03 Classification
M06T04 Clustering
M06T05 Dimensionality Reduction
M06T06 Support Vector Machines
M08T01 CBits to QBits link
M08T02 Circuits and Gates
M08T03 Measurements
M08T04 Algorithms
M08T05 The Qiskit SDK link link

Advanced-level topics

With all the stages set, the course dives into deep learning in Module 07 - Deep Learning and further engrossing topics in Module 08 - Quantum Computing and Module 09 - Quantum ML. The individual topics covered in this level are:

Topic ID Topic Name Tutorial Notebook
M07T01 Neural Networks
M07T02 TensorFlow and Keras
M07T03 Principal Component Analysis
M07T04 Feedforward Neural Networks
M07T05 Recurrent Neural Networks
M07T06 Boltzmann Machines and Autoencoders
M07T07 Reinforcement Learning
M08T06 Grover's Algorithm link
M09T01 Quantum Machine Learning
M09T02 Quantum Generative Adversarial Networks