About This Course
This 40 hour class combines our 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.
This course is instructor-led. Consult the class schedule below for times and locations.
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, GUI Development, and 2D 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 week wraps up on day five with a one-day module on building scientific Graphical User Interfaces (GUIs) and interactive visualization.
"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.
If you registered to attend this course online, the session times will be sent to you one week before your program start date. Virtual classes 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||January 24-28, 2022 | 8:30AM - 5:00PM MST||$2,500||Register Online|
|Online - Live Virtual||February 14-18, 2022 | 8:30AM - 5:00PM MST||$2,500||Register Online|
|Online - Live Virtual||March 28-April 1, 2022 | 8:30AM - 5:00PM MDT||$2,500||Register Online|
|Online - Live Virtual||April 25-29, 2022 | 8:30AM - 5:00PM MDT||$2,500||Register Online|
|Online - Live Virtual||May 16-20, 2022 | 8:30AM - 5:00PM MDT||$2,500||Register Online|
Course Syllabus & Topics
This class is taught in real-time by an Enthought Trainer.
Experience with Python is helpful (but not required). However, programming experience in some language (such as R, MATLAB, SAS, Mathematica, Java, C, C++, or VB) is expected. In particular, participants need to be comfortable with general programming concepts like variables, loops, and functions.
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
- 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
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
- Monitoring execution
2. Scientific GUIs and Interactive 2D Visualization
Day five provides an overview of creating graphical UIs and visualization applications using Traits and Chaco.
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.
3. 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
4. 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