About This Course

This class is intended for scientists and engineers interested in using Python for their day-to-day computational tasks. These five days of highly interactive training will give you a rock solid base to build high-quality software in terms of both readability and performance.


Course Overview

This class is intended for scientists and engineers interested in using Python for their day-to-day computational tasks.

  • It begins with a one-day introduction to the Python language focusing on standard data structures, control constructs, and code organization.
  • After a brief overview of the Scientific Python ecosystem, we dive into techniques for numeric data processing, including efficiently manipulating and processing large data sets using NumPy arrays and data visualization with 2D plots using Matplotlib.
  • Next up is an introduction to time series and data wrangling with Pandas.
  • The fourth day covers the necessary tools to write robust and efficient Python code: a unit test framework, the Python debugger, and more. The second half presents how to create interfaces between Python and other languages such as C and C++.
  • The week wraps up on day five with a one-day module on building scientific Graphical User Interfaces (GUIs).

Contact Us

Questions or need help registering? Call us at 512.536.1057 or fill out the form:

Course Syllabus & Topics

Course Prerequisites

Experience with Python is helpful (but not required). However, programming experience in some language (such as R, MATLAB, SAS, Mathematica, Java, C, C++, VB, or FORTRAN) is expected. In particular, participants need to be comfortable with general programming concepts like variables, loops, and functions.

Collapse All

1. Introduction to Python

We kick off the class by exploring the functionality of the IPython Shell, an enhanced interactive science-centric console. Next we review the Jupyter Notebook, a cell-based environment that renders scripts, plots, and rich media in a web-like interface, making it ideal for sharing and publishing analysis with peers. You’ll leave with a mastery of these tools that will accelerate your productivity and facilitate collaboration.

  • Data-Types (strings, lists, dictionaries and more)
  • Control Flow (if-then statements, looping)
  • Organizing code (functions, modules, packages)
  • Reading and writing files
  • Overview of Object-Oriented Programming (OOP)

2. Introduction to NumPy and 2D plotting

The NumPy package is presented as a tool for rapidly manipulating and processing large data sets. 2D plotting is introduced with matplotlib.

  • Plotting with matplotlib
  • Understanding the N-dimensional data structure
  • Creating arrays
  • Indexing arrays by slicing or more generally with indices or masks
  • Basic operations and manipulations on N-dimensional arrays

3. Time series analysis and data manipulation with Pandas

Built on top of NumPy arrays, the Python Data Analysis Library (Pandas) is a powerful and convenient package for dealing with multi-dimensional datasets. Participants will learn about its powerful data aggregation and reorganization capabilities for data set explorations, including support for labeling data along each dimension, missing values, and time series manipulations.

  • Pandas I/O operations
  • Pandas 1D and 2D data structures (Series and DataFrame)
  • Data alignment, aggregation, and summarization
  • Computation and analysis with Pandas
  • Dealing with dates and times
  • Visualization

1. Software Craftsmanship in Python

We review important concepts from software engineering and place them in the context of coding in Python. Participants will receive guidance and gain experience to help improve the quality, robustness and reliability of their code and develop solutions faster.Data-Types (strings, lists, dictionaries and more)

  • Python coding standards and organization
  • Testing code
  • Timing execution and profiling tools
  • Debugging
  • Monitoring execution

2. Interfacing with Other Languages

One of Python’s most powerful features is its ability to integrate seamlessly with other languages such as C and C++. In this module, you will learn how to use tools for integrating Python with legacy code in C/C++ as well as optimizing new Python code with compiled modules. Key topics include:

  • Integration of C/C++ code into Python
  • C-extension: wrapping C code by hand
  • Calling arbitrary shared-libraries with ctypes
  • Wrapping external C/C++ libraries with Cython
  • Speeding up Python with Cython
  • Note: An overview of interfacing with Fortran is available upon request

1. Scientific GUIs and Interactive 2D/3D Visualization

Day five provides an overview of creating graphical UIs and visualization applications using Traits and Chaco. Participants will also learn to quickly visualize data in 3D with Mayavi.

Students will learn to drive their code with a visual interface: They will build basic Graphical User Interfaces with drop-down menus, buttons, checkboxes, and other GUI widgets and create simple interactive 2D visualizations with Chaco to provide a more fluid user workflow. Finally, students will learn how to extend such interfaces.

2. Building GUIs with Traits

  • Creating reactive classes with initialization, validation, delegation, and notification
  • Building a graphical view of a Traits class
  • Organizing GUIs following the Model / View / Controller pattern

3. Interactive 2D visualization with Chaco

  • Integration into Traits UI
  • Scatter and line plots
  • Image plots
  • Containers for layout
  • Simple tool creation for event handling
  • Introduction to overlays

4. Interactive 3D visualization with Mayavi

  • Interactive 3D plotting from IPython using mlab
  • Overview of Mayavi’s capabilities

Open Class Schedule

Onsite corporate classes are also available. Discounts are available for 3 or more attendees and academics currently at a degree-granting institution. Contact us with the form to the right to learn more.

Where When Price (per person) Reserve a Seat
Los Alamos, NM March 2-6, 2020 $2500 Register Online
Albuquerque, NM March 9-13, 2020 $2500 Register Online
Albuquerque, NM April 20-24, 2020 $2500 Register Online
Albuquerque, NM June 8-12, 2020 $2500 Register Online

Contact Us

Questions or need help registering? Call us at 512.536.1057 or fill out the form:


I am worried that your training is only useful to people who are committed to using Enthought software products. How much of your training is usable without Enthought software?

Our training teaches students how to write software with Python and solve problems using its scientific packages, not how to use proprietary software. Everything you will learn uses free and open source software.
We provide Enthought Canopy (our integrated analysis environment and Python distribution) to training participants to ensure they have all of the tools and Python packages they need to complete the training and that the tools are as easy as possible to install. While participants sometimes do use other editors, package managers, and Python distributions, we strongly recommend participants use Canopy during the training. With Canopy we can ensure that you can easily install everything you need for the course out of the box and we can provide technical support (which we unfortunately cannot provide for other tool sets).

I use / will be using Anaconda Python. Will I still benefit from this course?

Absolutely. Our training materials work with any Python distribution (such as Anaconda), as long as you also have all of the necessary packages, a text or code editor, package manager, interactive IPython shell, and Jupyter notebooks installed.

Is a class completion certificate provided?

Yes, a class completion certificate is provided for the Python Foundations class.

Have a question that isn’t answered here? Contact us or call 512.536.1057.


Dr. Niederhut is not only thoroughly knowledgable about the Python language and its many components, but also highly effective at communicating this knowledge.

David F.

This is an excellent course toughing various Python aspects (from basic to advanced), providing you with a decent (mental) framework to start building your own scripts and/or full-fletched applications.

IC Design Engineer

This workshop was EXCELLENT and has inspired me to use what I have learned to improve my scientific work flow and improve the efficiency of data analysis in my laboratory.

Christopher W.

My knowledge on Python was nonexistent before the class. But after the class, Python is one of my primary programming languages.


The instructor was adept at explaining both the basics of the language and common uses of popular python tools. I have gained a greater understanding of how scientific tools for Python work and am ready to exercise these skills on both professional and personal projects.

Python for Scientist and Engineers Attendee

The class will be immediately useful in my current research, and it will be exceptionally helpful in several developmental projects I have been planning. In the end, this course saved me lots of time I would have wasted looking for the right way to implement my code.

Brett M.

I really enjoyed this course. I feel like it provided a great foundation to Python as well as an introduction to many of the tools that are available.

Carlee C.

I believe this class greatly improved my comprehension of Python and will contribute to my efficiency on projects moving forward.

Chris J.

This course is fantastic -- the concepts & methods that are directly applicable to my field. The teaching style, examples, and one-on-one interaction really helped to fill the gaps in my knowledge of Python.

Aaron P.

The course instructor was very considerate and thoughtful throughout the course. I’ve read Python codes before but this was my first formal Python training and easily the best programming short course I’ve taken to date. The course material was clear, the exercises were well-designed and adequate and the instructor communicated his ideas very well. At first, I was concerned that the course might be too advanced and I might loose track- not true. Certainly, the course was advanced but the instructor did his best to help us all get the best out of it.

Kofikuma D.

This is an effective course for introducing a scientist or engineer already familiar with basics of programming to the vast topic of Python programming at a depth appropriate for being productive in Python in the near future.

Mike F.

Best training class I ever had in the last 17 years working at NASA. I especially like the fact that the exercises, the solutions, and the examples are made available for students so that we can take a closer look after the class.


Overall it was a great course... The instructor was exceptionally good at explaining things and answering questions as well as working through student suggestions and helping us step through why something would or would not actually work. He was very good at walking through the learning/discovery/trial and error process and understanding how a beginner would approach some of the exercises and the errors in these approaches and explaining the right solution.

Python for Scientist and Engineers Attendee

The fact that Dr. Diller understands the Python fundamentals thoroughly and focuses not only on how to do something but more importantly on why specific features of the language work the way they do.

Python for Scientist and Engineers Attendee

Dr. Diller is a top-notch instructor. He taught with a positive attitude, keeping the audience interested with a excited/genuine style of teaching. He showed that he is extremely competent and experienced in Python.

Python for Scientist and Engineers Attendee

Seeing the vast array of tools available for Python as well as correcting the bad habits and methods I had been acquiring while using/learning Python for the last few months.

Python for Scientist and Engineers Attendee

I have taken many classes over the years by private companies. This was by far one of the best. Great content, GREAT instructor, and great demos. The #1 most important thing when hosting a class is the expertise of the instructor. Students know in 2 seconds if he knows what he/she is talking about. Dr. Grant knew Python inside and out. He was great.

Python for Scientist and Engineers Attendee

Great crash-course for Python. I haven't coded in any language in over a decade, and I feel like I will be able to write useful code in Python and seek out any libraries and documentation I may need to improve my code from here on out.

Python for Scientist and Engineers Attendee

This class went beyond expectations. Dr. Grant was a wealth of knowledge and truly showcased what can be done with Python and Canopy in an easy to follow manner.

H. Ming

This course was extremely useful in clearly teaching best practices in Python. I had experience with Python before the course, but I now know how best to fix existing scripts and move forward with Python in the best way possible.

Ryan S.

As a scientist/algorithm developer coming to Python, I was a little bewildered by the wealth of Python libraries available, not to mention legacy/deprecated ones. Enthought has a huge amount of Python expertise and this course gave an excellent overview of key elements of the Python tool stack, from base Python through to creating a GUI. From this course I feel I've gained a good appreciation of how to go about building a Python application that performs, for example, scientific data processing and visualization.

Guy M.

The course was dense yet easy to follow. I wish all my university professors were as good, skilled and professional as Dr. Grant

Yorick C.

Great course for the scientific programmer who'd like to delve deeper into Python and gain a good introduction to some of the Python tools out there catering to science/engineering applications. It was great to learn from people with extensive experience in both the development of some of those tools, and their application to solve real-world problems across diverse fields and sectors.

Micheal W.