Couse Outline
Python is a dynamic object-oriented programming language. It offers strong support for integration with other development languages and tools, and comes with extensive standard libraries.
Using Python correctly can lead to productivity gains and many users feel the language encourages the development of higher quality, more maintainable code.
Course Content
This Advanced Python course has been developed for real-world, commercial scenarios by our expert instructors. See below for detailed syllabus. If you have a technical question, please email sales@jbinternational.co.uk
Python Training Course Outline
1. Networking:
a. Standard networking tools in the Python distribution.
Python has some APIs for low-level socket programming and some higher-level API for things such as Web
protocol processing. This session is a review of the networking terminology and to these Python API.
b. Twisted Internet -- an event driven framework for networking.
This package, which is not part of the standard Python distribution but is freely available, is an example of an event-driven approach to networking applications.
2. Graphical user interface (GUI) programming:
a. Tkinter -- the orignal toolkit/API distributed with Python.
Python has traditional distributed the Tk widget set and the Tkinter package for GUI programming.This session reviews the model of event-driven programming for GUI programming and uses the Tkinter package for implementing user interfaces.
b. wxPython -- a more modern toolkit/API distributed withPython.
wxWidgets are a set of widgets designed to replace Tk for cross-platform programming. wxPython is a binding for Python to wxWidgets. This session reviews the model of event-driven programming for GUI programming and uses the wxPython package for implementing user interfaces.
3. XML processing.
XML is an important technology in modern computing. This session reviews the XML technology and the API available in Python for parsing, processing and generating XML.
4. Regular expressions and String Processing.
String processing is an important aspect of many systems, and working with regular expression is a crucial part of string processing. This session quickly reviews the Python features for string processing and then focuses on working with regular expressions to process strings.
5. Introspection, etc.:
a. The Python computational model.
This session focuses on the way in which Python programs are executed to show what features are available to support dynamic programming.
b. Meta-object protocol.
This session reviews in more detail how the Python computational model can be extended.
6. Dynamic language techniques.
Because Python is a dynamic programming language, code can be compiled and linked on the fly. This session focuses on what this means for programs, and in particular new techniques for configuring systems and passing information between subsystems.
7. Threads and concurrency.
Most modern systems a required to do more than one thing at once. Indeed many algorithms these days cannot be implemented without using concurrency. This session focuses on the threading package as a high-level API for realizing concurrentsystems.
8. Data structures, algorithms and complexity.
Introductory and intermediate courses on programming introduce variables, lists, dictionaries (aka maps). However it is the combination of these data structures that allow for the organization of data to easily solve problems. This session focuses on creating complex data structures so as to make algorithms straightforward, and introduces the technology needed to reason about the complexity of the data structures and algorithms.
9. Numerical methods, NumPy and SciPy.
Python, along with all dynamic programming languages, is generally poor for computationally intensive applications -- traditionally such applications are associated with Fortran, C, C++, and increasingly Java, programs. NumPy and SciPy are packages that are Python bindings to Fortran libraries that mean that algorithms can be implemented in Python and yet not suffer any performance degredation. This session investigates a small numeric application to show what is possible.
10. Domain Specific Languages.
a. Designing a DSL.
Increasingly programming is explicitly about defining a language with which to describe the solution to a problem. This has always been so in fact but now we have a name for it "Domain Specific Languages". Designing a DSL is about using the ability to explicilty define meaning to symbols and sequences of symbols. Traditionally C++ with its operator overloading has been seen as the vehicle for this, but dynamic programming languages are even more suited to the task since definitions can change at runtime as needed. Designing a DSL is all about creating abstractions for the domain. This session will choose an example highly applicable to the attenders of the course, and could range from a language for acturial analysis for premium quoting to game semantics.
b. Implementing a DSL.
Implementing a DSL requires using all the dynamic and MOP features of Python and this session will do that in spades.