python-for-physicists

A series of programming tutorials in Python aimed for physicists.

View the Project on GitHub Sampreet/python-for-physicists

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