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 512.536.1057 or fill out the form:

Course Instructors

Enthought instructors have doctorates in scientific fields such as physics, engineering, computer science, and mathematics, and all have extensive experience through research and consulting in applying Python to solve complex problems across a range of industries, allowing them to bring their real world experience to the classroom every day. Enthought instructors possess professional, first-hand experience with the tools and technologies covered in our courses.


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.

Days 1-3

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

Day 4

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

Day 5

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 to learn more.

WhereWhenPrice (per person)Register / Reserve a Seat
Albuquerque, NMSeptember 11-15, 2017SOLD OUTContact us with the form to the right to join the wait list
Washington, D.C.September 25-29, 2017$2500
Los Alamos, NMOctober 2-6, 2017$2500
Cambridge, UKOctober 16-20, 2017£2050Contact us with the form to the right
San Diego, CAOctober 31-November 3, 2017$2500Contact us with the form to the right
Albuquerque, NMNovember 13-17, 2017$2500
Los Alamos, NMDecember 4-8, 2017$2500
Austin, TXDecember 11-15, 2017$2500Contact us with the form to the right

Contact Us

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


  • Is a class completion certificate provided?
    • Yes, a class completion certificate is provided for the Python for Scientists & Engineers class.

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


The course was excellent. It pushed the boundaries of what I could absorb, which was good because it covered a lot of ground and the exercises are well documented for self-study. Dr. Jordhal’s knowledge level and ability to teach and think at the same time was impressive!

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 (...)

Postdoctoral Fellow, IMDEA

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 (...)

Senior Data Scientist, Cobalt LLC

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 (...)

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 (...)

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.

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.

Researcher, LANL

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

Scientist, Los Alamos National Laboratory

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

Engineering Advisor, ExxonMobil Coporation

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.

Computational Engineer, Sandia National Laboratories

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.

Test Engineer, U.S. Air Force

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.

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.

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.

Material Dynamics, Sandia National Laboratories

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.

Research Scientist, Remote Sensing, National Research Laboratory

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.

Data Scientist, State Farm

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.

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.

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

Cybersecurity, National Research Laboratory

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.

Associate Professor, Loma Linda University

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.

Exceptionally knowledgeable instruction, with good examples and exercises.

Product Engineer, Oil and Gas

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

Master Student

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.

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 (...)

Crop Modeler