About This Course

This course is now taught virtually, with classes led online by an Enthought trainer in real-time on GoToMeeting.

We endeavour to deliver these virtual programs as we would a face-to-face program. Interaction with the trainer is encouraged.

This 5-day class combines our 3-day Python Foundations with content relevant to scientists and engineers interested in using Python for their day-to-day computational tasks. This highly interactive training will give you a rock-solid base for building high-quality software in terms of both readability and performance. You’ll learn the essentials of the Python language and of the foundational packages of Python’s scientific ecosystem, as well as how to rapidly develop desktop applications.


Course Overview

Days 1–3: Python Foundations

  • It begins with a one-day introduction to the Python language focusing on standard data structures, control constructs, and code organization.
  • We then cover object-oriented programming in Python.
  • 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 Pandas to efficiently load, clean, normalize, aggregate, transform, and visualize data.

Days 4–5: Software Craftsmanship, Interfacing with C/C+, GUI Development, and 2D/3D Visualization

  • The fourth day covers the necessary tools to write robust and efficient Python code: a unit test framework, refactoring techniques, the Python debugger, and more. The second half presents how to create interfaces between Python and other languages such as C and C++ to speed up code or incorporate legacy code.
  • The week wraps up on day five with a one-day module on building scientific Graphical User Interfaces (GUIs) and interactive visualization.

View Course FAQs



"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.

"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.


Class Schedule

If you registered to attend this course online, the session times will be sent to you one week before your program start date. The course will be held on GoToMeeting.

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

Where When Price (per person) Reserve a Seat
Online - Live Virtual October 19-23, 2020 | 8:30AM - 5:00PM MDT $2000 Register Online
Online - Live Virtual December 7-11, 2020 | 8:30AM - 5:00PM MST $2000 Register Online
Online - Live Virtual January 25-29, 2021 | 8:30AM - 5:00PM MST $2000 Register Online

Contact Us

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

Course Syllabus & Topics

Due to social distancing measures currently in place to slow the spread of COVID-19, we will be teaching this course online, running virtual classes in real-time on GoToMeeting. with an Enthought trainer. The content and prerequisites for the virtual course do not differ from the face-to-face program. 

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 for private classes.

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