We offer introductory and advanced courses in Python for both:
- beginners to programming;
- experienced programmers new to Python.
The courses are a mixture of hands-on exercises and instruction from experts.
Upcoming public courses
Python for Data Analysis: 11-13 January 2016. More info and booking.
Python for Scientists and Engineers: 18-22 January 2016. More info and booking.
Python for Scientists and Engineers: 1-5 February 2016. More info and booking.
Python for Scientists and Engineers
We offer 3-day to 5-day specialist courses in Python for science and engineering. These include the core concepts and types of Python (day 1), how to use it well (day 2), and specific help on manipulating data for scientific and engineering applications (days 3-5).
By the end of the course, you will have all the knowledge you need to start programming competently in Python. You will know what’s available with Python, how to structure your code, and how to use Python’s data structures competently to write clean, efficient code. You will have had experience with using Python for various scripting and scientific data manipulation tasks, including easily creating beautiful plots, manipulating different kinds of scientific data, performing image analysis, and analysing geospatial information in Python.
This course requires some familiarity with programming concepts, but no prior knowledge of Python.
Day 1: Python essentials
Day 1 covers the basics of using Python for general programming tasks, with a focus on scientific and engineering applications. The syllabus is:
- Why use Python? What’s possible? Python versus Java, C, C++, Matlab, R, …
- The Jupyter notebook and IPython shell for rapid prototyping
- Python syntax and concepts
- Input and output of string and binary data
- Useful data structures
- Practical tips and tricks
- Tour of the amazing standard library
Day 2: Real-world Python
Day 2 shows you how to scale up from toy scripts to useful systems developed in Python, with a focus on maintainability, robustness, and efficiency. It also introduces some very practical tips and tools for Python programming. The syllabus is:
- Classes and objects
- Modularity and packaging
- Best practices for writing maintainable code
- Python idioms and style
- Documenting and unit testing Python code
- Practical debugging strategies
- Efficient coding practices
- Tools for benchmarking, profiling, and logging
- Compatibility with Python 2.x and 3.x
Day 3: Basics of Scientific Computing with Python
Day 3 teaches the use of Python for scientific computing. It covers array and matrix manipulation, an overview of available scientific routines, and 2D plotting, with the packages NumPy, SciPy, and Matplotlib. The syllabus is:
- Introduction to numerical data manipulation with NumPy
- Tour of SciPy for scientific data manipulation: optimization, statistics, clustering, interpolation, signal processing (including image denoising), classification, sparse matrices
- 2D plotting and visualisation with Matplotlib
Day 4: Handling Scientific Data in Python
Day 4 introduces further practical tools for scientists and engineers working with different kinds of data. The syllabus is:
- Data analysis and modelling with Pandas (including time-series, missing values, and Excel data)
- Interfacing Python with relational databases
- Managing huge hierarchical data sets (NetCDF and HDF5)
- Interfacing Python with other programming languages: C/C++, Fortran, R
- Scaling up: introduction to parallel processing and handling big data
Day 5: Handling Spatial Data in Python
Day 5 introduces practical tools for scientists and engineers working with geospatial data. The syllabus is:
- Introduction to spatial analysis in Python
- Reading spatial data with open-source tools (QGIS, GDAL, Fiona, GRASS)
- Projections; vector analysis and the ‘shapely’ package
- Raster image analysis in Python: worked examples with SciPy (ndimage, signal) and PIL
- Network analysis using NetworkX
- Advanced spatial analysis topics: spatial autocorrelation with PySAL; processing large spatial datasets with supervised classification and point pattern analysis.
By the end of this course, you will have all the knowledge you need to start programming competently in Python. You will know what’s available with Python, how to structure your code, how to make the most of Python. You will have had experience with using Python for various scripting and data manipulation tasks. You will know the basics of how to use Python for developing web apps for intranet sites or the internet. You will understand the elegance and power of the language and how to find further learning resources as you begin using Python to solve real-world problems.
Python for Programmers
We also offer 3-day courses in Python for programmers. By the end of the Python for Programmers course, you will have all the knowledge you need to start programming competently in Python. You will know what’s available with Python, how to structure your code, how to make the most of Python. You will have had experience with using Python for various scripting and data manipulation tasks. You will know the basics of how to use Python for developing web apps and/or desktop graphical interfaces. You will understand the elegance and power of the language and how to find further learning resources as you begin using Python to solve real-world problems.
Days 1 and 2
Days 1 and 2 are as above, but we assume you have prior programming experience, move faster and take you into more depth about how to make the most out of the powerful Python language, its standard libraries, development tools, best practices, and the most important third-party Python libraries.
The third day of Python for Programmers is one of the following options:
Day 3: Web development with Django
Day 3 teaches you the Django framework (Python’s answer to Ruby on Rails) for developing web apps. This demonstrates the Python language features and concepts from days 1-2 in a practical setting and shows you how to develop web apps that are well-structured and maintainable. By the end of day 3, participants will know enough to start developing useful database-backed web apps in Django immediately. The syllabus is:
- Database access in Python
- Basics of web programming
- What is Django? What’s possible?
- Django’s models and ORM
- Django views and templates
- Handling URLs and web forms
- Django’s automatic admin interface
- Building a complete database-backed web app
- Practical tips: debugging, security, database migrations, and scalability
Day 3: Graphical User Interfaces with PyQt
Day 3 shows you how to create graphical interfaces quickly and maintainably using PyQt. The syllabus is:
- An introduction to GUI programming
- Windows, widgets and dialogs
- Layout design and management, and how to use the Qt Designer
- Signals and slots
- Review of some real examples: bringing it all together
- Error-handling and logging
- Menus and toolbars
- More widgets
- Graphics and drawing primitives
- Custom examples: working step-by-step through your GUI needs
Python for Data Analysis
This is a course for data analysts, financial analysts, statisticians, software developers, and other technical staff interested in learning to use Python for analysing and visualising data.
By the end of the course, you will have all the knowledge you need to start using Python competently for processing, analysing, modelling, and visualising various kinds of data, with a focus on time series. You will have had experience with using Python for a range of scripting, data-manipulation and plotting needs with data in a variety of formats, including CSV, Excel spreadsheets, SQL databases, JSON, and API endpoints, as well as log files and unstructured text. You will have applied powerful tools for optimisation, regression, classification, and clustering, in useful practical settings on small and large data sets. You will understand the elegance and power of the Python language and its powerful ecosystem of packages for data analysis, and you will be well-placed to continue learning more as you use it day-to-day.
The syllabus for day 1 is as above. Days 2-3 are as follows:
Day 2: Essential analytic tools and data formats
The Pandas package is an amazingly productive tool for working with and analysing data in Python. Day 2 gives a thorough introduction to Pandas and related tools for working with different kinds of data, including spreadsheets, time-series data, and SQL databases. The syllabus is:
- Fast, powerful data analysis with Pandas
- Working with time-series data
- Working with missing and noisy data
- Reading and writing data: CSV, Excel, SQL databases, JSON, and spatial formats
- Indexing, grouping, merging, reshaping, summarising data
- Statistical graphics and visualisation of data using Pandas, Matplotlib, and Seaborn
Day 3: Optimisation, regression, clustering, classification
Day 3 introduces four of the most fundamental and powerful techniques for analysing many kinds of real-world data in Python. The datasets are selected from a range of industries: financial, geospatial, medical, marketing, and social sciences. The syllabus is:
- Optimisation under constraints with OpenOpt, with applications in risk analysis
- Linear and nonlinear regression with Statsmodels, with application to quality assessment and election forecasting
- Clustering of data using scikit-learn, with application to outlier detection
- Classification with scikit-learn, with application to diagnosis and prediction
We offer courses either on-site within your organisation or at our partner training facilities in Australian capital cities and Singapore.
The price for our public courses is A$770 per day (inc GST) in Australia, or S$840 per day in Singapore.
Group discounts of 15% are available for group bookings of 5 or more.
- Python for Data Analysis: Sydney, 11-13 January 2016. Book here.
- Python for Scientists and Engineers: Canberra, 18-22 January 2016. Book here.
- Python for Scientists and Engineers: Melbourne, 1-5 February 2016. Book here.
We also offer custom courses on-site for teams within organizations. These are particularly appropriate if your team uses particular tools or data sources in its workflow. These are also helpful to bring a whole team up-to-speed with Python-based development. Please contact us to discuss your needs.