Fri, Sep 30, 2022

4:30 PM – 6 PM EDT (GMT-4)

Add to Calendar

Private Location (sign in to display)

View Map



This session will cover tips, tricks, tools, and techniques to make more effective and productive use of Python in research computing. It will cover aspects of Python in more detail than is typical in introductory treatments, with emphasis on best practices for making one’s code more “Pythonic”, on avoiding common pitfalls when using Python in research computing, and on understanding available tools within the base Python language and the broader Python ecosystem. An assortment of topics will be covered, including dataclasses, debugging, testing, what decorators are and how they work, and useful modules and tools. The target audience is current users of Python who know the basics but would like to be more effective and professional in their Python code development. This session will be heavily hands-on.

Learning objectives: Participants will come away with a stronger foundation of how Python works “under the hood” and of some best practices for Python programming, both in and out of scientific contexts.

Knowledge prerequisites: Participants should have a fair amount of Python use under their belts, even if their Python knowledge is not “deep”. In other words, attendees should be comfortable with basics of Python syntax and constructs (e.g. how loops and if/else statements work, how to define functions, what lists/tuples/dictionaries are, how slices work, etc). This session is not appropriate for those without prior Python experience or prior programming experience.

Hardware/software prerequisites: For the hands-on portions of this session, participants should have access to Python 3.10 and be able to install a few packages. One way to do this is to install the Anaconda Python 3 distribution –" which includes Jupyter notebooks –" on their laptops in advance. Instructions can be found at Alternately, participants without Python 3 installed on their laptops who prefer to run Jupyter Notebooks remotely on one of Princeton’s systems can do so the “MyAdroit” web interface to the Adroit cluster. To access MyAdroit, you should first register for an account on Adroit ( and then connect to MyAdroit and start a Jupyter session as described here:

Session format: Presentation, demo, and hands-on

What to expect: Single workshop (one-off workshop –" 2 hours total)


Henry Schreiner's profile photo

Henry Schreiner

Princeton University

Henry Schreiner is a Computational Physicist / Research Software Engineer in High Energy Physics. He received his Ph.D. in experimental high-energy physics from the University of Texas at Austin. Henry is working on a three year project to develop simpler compiled packages for Python using Scikit-build. He is also an admin of Scikit-HEP, and also the lead web developer for IRIS-HEP and Scikit-HEP. Henry is also a maintainer/core developer for pypa/build, scikit-build, cibuildwheel, pybind11, and Plumbum for Python, and primary author of CLI11 for C++. He is also the author of a variety of CMake, GPU, and Python training courses and classes. He is also currently co-teaching APC 524.

Hosted By

PICSciE/Research Computing | View More Events
Co-hosted with: GradFUTURES

Contact the organizers