2. I. M4KNow
II. Python in Enterprises?
III. Target Audiences for Courses
IV. Foundation Courses
V. Intermediate Courses
VI. Book a Course
Table of Contents
4. §M4KNow is a one-man company of Antonio Montano,
offering a wide range of services:
§Interim management: whatever the need (post-
merger integration, growth transition, new venture)
we manage companies, departments, or teams.
§Technology/enterprise architecture advisory: you
have the requirements (or we may help define), we
develop solutions (suppliers, developers,
frameworks, technology stacks, processes).
§Coaching: we provide training and guidance on
technology, enterprise architecture, management.
M4KNow & Antonio Montano
5. §M4KNow provides training on the Python
language and on most relevant libraries,
methods, and applications.
§M4KNow supplies also consultancy in:
§Project management.
§Change management.
§Product management.
§Software architecture.
M4KNow services
6. Antonio Montano personal page on LinkedIn (link).
M4KNow company page on LinkedIn (link).
Antonio Montano on Twitter (@antomon: link).
+393457893690
antonio.montano@gmail.com
Social media & Contacts
9. §Python is a sort of Swiss Army knife for all sorts of
software related tasks, from small automation
scripts to large web applications.
§Python is complete, robust, resilient, and actively
developed by a community with a transparent and
partecipative way of evolving the language and
libraries.
§Python multi-paradigm support is well suited for
individuals who want to experiment, but also for
professional development teams who build large
enterprise software.
Motivation
10. §One of the misconceptions around Python and
other dynamically-typed languages is that they
cannot be reliably used to build enterprise-grade
software.
§However, almost all commercial and government
enterprises already use Python in some capacity,
either as glue code between disparate
applications or to build the applications
themselves.
Enterprise Python
11. § Enterprise software is built for the requirements of an organization rather
than the needs of an individual. Software written for enterprises often needs
to integrate with legacy systems, such as existing databases and non-web
applications.
§ Organizations develop enterprise software with numerous custom
requirements to fit the specific needs of their operating model. Therefore the
software development process often becomes far more complicated due to
disparate factions within an organization vying for the software to handle
their needs at the expense of other factions.
§ The complexity due to the many stakeholders involved in the building of
enterprise software leads to large budgets and extreme scrutiny by non-
technical members of an organization. Typically those non-technical people
place irrational emphasis on the choice of programming language and
frameworks when otherwise they should not make technical design
decisions.
What is enterprise software?
12. § Traditionally large organizations building enterprise software have
used statically typed languages such as C++, .NET and Java.
Throughout the 1980s and 1990s large companies such as Microsoft,
Sun Microsystems and Oracle marketed these languages as
“enterprise grade”. The inherent snub to other languages was that
they were not appropriate for CIOs’ difficult technical environments.
Languages other than Java, C++ and .NET were seen as risky and
therefore not worthy of investment.
§ In addition, “scripting languages” such as Python, Perl and Ruby
were not yet robust enough in the 1990s because their core standard
libraries were still being developed. Frameworks such as Django,
Flask and Rails (for Ruby) did not yet exist. The Web was just
beginning and most enterprise applications were desktop apps built
for Windows. Python simply wasn't made for such environments.
Why are there misconceptions about
Python in enterprise environments?
13. § From the early 2000s through today the languages and ecosystems for many
dynamically typed languages have greatly improved and often surpassed
some aspects of other ecosystems. Python, Ruby and other previously
derided languages now have vast, well-maintained open source ecosystems
backed by both independent developers and large companies including
Microsoft, IBM, Google, Facebook, Dropbox, Twilio and many, many others.
§ Python’s open source libraries, especially for web development and data
analysis, are some of the best maintained and fully featured pieces of code
for any language.
§ Meanwhile, some of the traditional enterprise software development
languages such as Java have languished due to underinvestment by their
major corporate backers. When Oracle purchased Sun Microsystems in
2009 there was a long lag time before Java was enhanced with new language
features in Java 7. Oracle also bundles unwanted adware with the Java
installation, whereas the Python community would never put up with such a
situation because the language is open source and does not have a single
corporate controller.
Why is Python now appropriate for
building enterprise software? (I)
14. § Other ecosystems, such as the .NET platform by Microsoft have fared
much better. Microsoft continued to invest in moving the .NET
platform along throughout the early part of the new millennium.
§ However, Microsoft’s enterprise products often have expensive
licensing fees for their application servers and associated software.
In addition, Microsoft is also a major backer of open source,
especially Python, and their Python tools for Visual Studio provide a
top-notch development environment.
§ The end result is that enterprise software development has changed
dramatically over the past couple of decades. CIOs and technical
executives can no longer ignore the progress of Python and the great
open source community in the enterprise software development
landscape if they want to continue delivering business value to their
business side customers.
Why is Python now appropriate for
building enterprise software? (II)
15. § According to Stack Overflow, “Python has a solid claim to
being the fastest-growing major programming language.”1
§ “Why is Python growing so fast? Python is used in a variety of
purposes, ranging from web development to data science to
DevOps, and it’s worth understanding what particular
applications of Python have recently become more common.”
[…]2
§ “First, the fastest-growing use of Python is for data science,
machine learning and academic research.” […] “However,
Python’s growth is spread pretty evenly across industries. In
combination this tells a story of data science and machine
learning becoming more common in many types of companies,
and Python becoming a common choice for that purpose.”2
The incredible growth of Python according
to “Stack Overflow” [9/2017]1,2
16. The image
shows data on
Stack Overflow
question views
going back to
late 2011, and in
this time period
the growth of
Python is
compared to five
other major
programming
languages.
The growth is
impressive.1
17. Stack Overflow
forecasts the
next two years
of growth with
a model called
“STL”, which
combines
growth with
seasonal trends
to make a
prediction about
future values.1
18. Stack Overflow
disentangles Python’s
recent growth across
development fields by
examining the growth in
traffic to content tags
representing notable
Python packages in each
field. So, they obtain to
compare the web
frameworks Django and
Flask to the data science
packages NumPy,
matplotlib, and pandas.2
19. Stack Overflow
examine content tags
relationships by
considering what pairs
of tags tend to
be correlated: that is,
whether pairs of
Python users are
disproportionately
likely to visit both tags.
By filtering for pairs of
tags with a high
Pearson correlation,
they are able to display
these relationships in a
network diagram.2
20. § The TIOBE Programming Community index is an indicator
of the popularity of programming languages. The index is
updated once a month. The ratings are based on the
number of skilled engineers world-wide, courses and
third party vendors. Popular search engines such as
Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube and
Baidu are used to calculate the ratings.
§ The index can be used to check whether your
programming skills are still up to date or to make a
strategic decision about what programming language
should be adopted when starting to build a new software
system.
TIOBE index [9/2017]3
21. TIOBE index: the positions of the top 10 programming languages of many
years back. (Please note that these are average positions for a period of 12
months)3
22. TIOBE index: the ratings of the top 10 programming languages of
many years back.3
23. § The IEEE Spectrum Top Programming Languages app synthesizes 12
metrics from 10 sources to arrive at an overall ranking of language
popularity. The sources cover contexts that include social chatter,
open-source code production, and job postings.
§ Starting from a list of over 300 programming languages gathered
from GitHub, IEEE Spectrum looked at the volume of results found on
Google when they searched for each one in using the template “X
programming” where “X” is the name of the language. They filtered
out languages that had a very low number of search results and then
went through the remaining entries by hand to narrow them down to
the most interesting. They labeled each language according to
whether or not it finds significant use in one or more of the following
categories: web, mobile, enterprise/desktop, or embedded
environments.
IEEE Top Programming Languages
[8/2017]4
24. IEEE Spectrum puts
Python at the top of the
charts ahead of C, Java,
and C++. The interactive
study, which combined
12 metrics with 10
different online sources,
was the result of a
“period of consolidation
in coding”, meaning the
big languages would
stay where they are with
the explosion of cloud,
mobile and big data
applications, according
to IEEE.
25. Python has continued its
upward trajectory from last
year and jumped two places
to the No. 1 slot, though the
top 4, Python, C, Java, and
C++, all remain very close in
popularity. C# has
reentered the top 5, taking
back the place it lost to R
last year. Ruby has fallen all
the way down to 12th
position, but in doing so it
has given Apple’s Swift the
chance to join Google’s
Go in the Top 10. This is
impressive, as Swift
debuted on the rankings
just 2 years ago. (2017
ranking on the left, 2016 on
the right)
26. 1.“The Incredible Growth of Python”, by David
Robinson (Stack Overflow) on September 6, 2017
(link)
2.“Why is Python Growing So Quickly?”, by David
Robinson on September 14, 2017 (link)
3.“TIOBE Index for September 2017” (link)
4.“Interactive: The Top Programming Languages
2017”, by Nick Diakopoulos and Stephen
CassPosted on July 18, 2017 (link)
Bibliography
28. If we want to live with the machine, we must
understand the machine, we must not
worship the machine
Norbert Wiener
29. § You are a student or professional that wants to build custom behavior in
machines.
§ To accomplish that task, you need some tools like a programming language,
a development environment, and libraries, just to not reinvent the wheel.
§ Then, Python “ecosystem” is the right choice because it:
§ Is simple, smart, and powerful.
§ Is backed by a big community.
§ Is plenty of resources.
§ Runs on every platform and integrates with most computing resources.
§ All “hot” topics of the Python world are covered with examples and exercises:
§ Python language and standard libraries.
§ Python application deployment and distribution.
§ Relational and NoSQL databases.
§ Development tools.
§ NumPy, matplotlib, Pandas, SciPy, scikit-learn.
§ Django.
You are a first-timer
30. §You are a business analyst who wants deeper insights
from models in lesser time.
§You are a data practitioner who needs tailored data
manipulations, from acquisition to transformation.
§You are a scientist with theoretical models to
validate or tune with numbers.
§Python is here for you, because it has:
§Complete and robust libraries for data
management.
§Scientific computing extensive support, from
standard numerical analysis to deep learning.
You are a non-IT professional
31. §If you already know a programming language, our
courses will give you a shortcut to understanding
the Python language and its design philosophy.
§Moreover, we will introduce you to the Python
giant ecosystem and applications to leverage its
broad capabilities, from web to science to
domains.
§Then, we will show you how Python is useful,
effective, and can scale.
You are an experienced programmer
33. § About:
§ This three day intensive Python training class provides practical,
hands-on experience and foundational working knowledge of
Python for data analysis, science, engineering, and other technical
applications.
§ Whether you are new to Python or a long-time enthusiast, you’ll
benefit from this focused series of topics and best practices taught
by experts who create Python software for notable companies.
§ Prerequisites:
§ 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.
Course P.F1: Python Foundations
34. § The Python Foundations course will get you up to speed quickly on
how to optimize your use of the Python standard language and key
Python packages for data exploration, modeling, and analysis.
§ You’ll leave with:
§ Hands-on experience setting up a fully functioning integrated
analysis environment and popular Python tools for scientific and
numeric computing.
§ An understanding of how to use the Python standard library to write
programs, access various tools, and document and automate
analytic processes.
§ Orientation to some of the most powerful and popular Python
libraries for modeling and analysis, including Pandas (data
preparation, analysis, and modeling; time series analysis), NumPy
(fast numerical computing), and matplotlib (data visualization).
P.F1 course overview
35. § Syllabus:
§ An understanding of how to use the Python standard library to write
programs, access various tools, and document and automate
analytical processes.
§ Along the way we’ll provide insight into Python’s design choices
that will help you understand why Python works the way it does.
§ Topics:
§ Python philosophy.
§ Shells and IDEs.
§ Types (strings, lists, dictionaries, and more).
§ Control flow (if-then statements, looping).
§ Basic code organization (functions, modules, packages).
§ Reading and writing files, other utilities.
§ Overview of programming paradigms and of pros/cons of
procedural, object-oriented, functional paradigms.
P.F1 day 1: Python essentials
36. § Syllabus:
§ Here we add breadth and depth to your Python skills, exploring the topics
you'll need to create robust and readable applications of any size.
§ At the end of the day, you'll be familiar with the majority of Python
techniques and constructs used in Python programs.
§ Crucially, we'll also advise you on when, and when not, to use the different
tools available in Python to best effect, to maximize the quality of your
code, your productivity, and the joy inherent in coding in Python.
§ Topics:
§ Generators expressions and functions.
§ List comprehensions.
§ Lambda functions.
§ Inheritance and subtype polymorphism.
§ Exception handling.
§ Isolated development environments with virtualenv.
§ Packaging and distributing your project.
§ Debugging and code profiling.
P.F1 day 2: Python mastery
37. § Syllabus:
§ There are a number of “must-have” packages for scientific computing and
data analysis with Python. We’ll review three of these that will give you the
underpinnings you need to be able to expand your knowledge into
additional packages that fit your area of specialization. If you are coming
from a background in MATLAB® or R, you’ll find these libraries essential.
§ The NumPy package is presented as a tool for rapidly manipulating and
processing large data sets. 2D plotting is introduced with matplotlib.
§ Built on top of NumPy arrays, the Python Data Analysis Library (Pandas) is
a powerful and convenient package for dealing with tabular datasets.
Participants will learn about its powerful data aggregation and
reorganization capabilities for data set explorations, including support for
labeling data along each dimension, dealing with missing values, and time
series manipulations.
§ Finally, we’ll visually organize data with matplotlib.
P.F1 day 3: Scientific computing and
data analysis (I)
38. § Topics:
§ Understanding the n-dimensional data structure.
§ Creating and indexing arrays by slicing or more generally with indices or
masks.
§ Basic operations and manipulations on n-dimensional arrays
§ Plotting with matplotlib.
§ Working with Pandas data structures: series and dataframes.
§ Accessing your data: indexing, slicing, fancy indexing, boolean indexings.
§ Data wrangling, including dealing with dates and times and missing datas.
§ Adding, dropping, selecting, creating, and combining rows and columns
§ Split-apply-combine with dataframes.
§ Data summarization and aggregation methods.
§ Pandas groupby method.
§ Reshaping, pivoting, and transforming your data.
§ Simple and rolling statistics.
§ Time series analysis with Pandas.
P.F1 day 3: Scientific computing and
data analysis (II)
40. § About:
§ This course is intended for data practitioners interested in using Python for
their day-to-day analysis and computational tasks.
§ These four days of highly interactive training will give you a rock-solid base
to build high-quality software in terms of both readability and
performance.
§ Prerequisites:
§ Some programming experience in some language (such as R, MATLAB,
SAS, Mathematica, Java, C, C++, VB, or FORTRAN) is expected.
§ Participants need to be comfortable with general programming concepts
like variables, loops, functions, and basic data concepts like entity-
relationship model, file and exchange formats, and so on.
§ The course assumes also a working knowledge of key data science topics
(standard numerical methods, statistics, machine learning, and general
data manipulation methods).
Course P.I1: Python for Data
Practitioners
41. § 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++.
P.I1 course overview
42. § Syllabus:
§ An understanding of how to use the Python standard library to write
programs, access various tools, and document and automate analytical
processes.
§ Along the way we’ll provide insight into Python’s design choices that will
help you understand why Python works the way it does.
§ Topics:
§ Python philosophy.
§ Shells and IDEs.
§ Types (strings, lists, dictionaries, and more).
§ Control flow (if-then statements, looping).
§ Basic code organization (functions, modules, packages).
§ Reading and writing files, other utilities.
§ Generators expressions and functions.
§ List comprehensions.
§ Lambda functions.
P.I1 day 1: Python essentials
43. § Syllabus:
§ 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.
§ Topics:
§ Overview of programming paradigms and of pros/cons of procedural,
object-oriented, functional paradigms.
§ Inheritance and subtype polymorphism.
§ Closures.
§ Decorators.
§ Context managers.
§ Exception handling.
§ Isolated development environments with virtualenv.
§ Packaging and distributing your project.
§ Debugging and code profiling.
P.I1 day 2: Python mastery
44. § Syllabus:
§ There are a number of “must-have” packages for quantitative data analysis
with Python. We’ll review three of these in this class that will give you the
underpinnings you need to be able to expand your knowledge into
additional packages that fit your area of specialization. If you are coming
from a background in MATLAB® or R, you’ll find these libraries essential.
§ The NumPy package is presented as a tool for rapidly manipulating and
processing large data sets. 2D plotting is introduced with matplotlib.
§ Built on top of NumPy arrays, the Python Data Analysis Library (Pandas) is
a powerful and convenient package for dealing with tabular datasets.
Participants will learn about its powerful data aggregation and
reorganization capabilities for data set explorations, including support for
labeling data along each dimension, dealing with missing values, and time
series manipulations. Then, we’ll visually organize data with matplotlib.
P.I1 day 3: Data analysis (I)
45. § Topics:
§ Understanding the n-dimensional data structure.
§ Creating and indexing arrays by slicing or more generally with indices or
masks.
§ Basic operations and manipulations on n-dimensional arrays.
§ Plotting with matplotlib.
§ Working with Pandas data structures: series and dataframes.
§ Accessing your data: indexing, slicing, fancy indexing, boolean indexings.
§ Data wrangling, including dealing with dates and times and missing datas.
§ Adding, dropping, selecting, creating, and combining rows and columns
§ Split-apply-combine with dataframes.
§ Data summarization and aggregation methods.
§ Pandas groupby method.
§ Reshaping, pivoting, and transforming your data.
§ Simple and rolling statistics.
§ Time series analysis with Pandas.
P.I1 day 3: Data analysis (II)
46. § Syllabus:
§ Before doing any of data manipulation tasks, however, you will
need to know how to get data into Python. So, you'll learn the
many ways to import data into Python: (i) from flat files such as
.txts, xmls and .csvs; (ii) from files native to other software such
as Excel spreadsheets and MATLAB files; (iii) from relational
databases such as SQLite & PostgreSQL; (iv) from web
sources in JSON format.
§ One of Python’s most powerful features is its ability to
integrate seamlessly with other languages such as C and
C++. In this day, 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.
P.I1 day 4: Integrating and interfacing
(I)
47. §Topics:
§Managing flat files with NumPy and Pandas.
§Managing MATLAB and Excel files with Pandas.
§Relational database and SQL execution.
§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.
P.I1 day 4: Integrating and interfacing
(II)
48. §Syllabus:
§At the end of this day you will have a working
understanding of what machine learning tools are
available in scikit-learn and how to use them.
§Topics:
§Input: 2D, samples, and features.
§Estimator, predictor, transformer interfaces.
§Pre-processing data.
§Regression.
§Classification.
§Model selection.
[Available upon request] P.I1 day 5:
Machine learning basics
49. § About:
§ The course has an overview of front-end and back-end technologies, as
well as essential developer tools for troubleshooting, performance
optimization and collaboration.
§ Specifically, it covers the basics of Web internals, HTML, CSS, Javascript,
Python, Django, MySQL, Chrome Developer Tools, and Git for version
control.
§ At the end of this course, you should be able to build a web application
from scratch.
§ Prerequisites:
§ Some programming experience in some language (such as R, MATLAB,
SAS, Mathematica, Java, C, C++, VB, or FORTRAN) is expected.
§ Participants need to be comfortable with general programming concepts
like variables, loops, functions, and basic data concepts like entity-
relationship model, file and exchange formats, and so on.
Course P.W1: Python for Web
Applications [2018]
51. You can write to antonio.montano@gmail.com
with:
§Course ID.
§Number of participants.
§Location.
§Preferred hours.
§Custom requests.
Get information and quote