86 lines
4.0 KiB
Markdown
86 lines
4.0 KiB
Markdown
# Practical Python Programming
|
|
|
|
When I first learned Python nearly 25 years ago, I was immediately
|
|
struck by the ease at which I could productively apply it to all sorts of messy
|
|
work projects. Fast-forward a decade and I found myself teaching
|
|
others the same fun. The result of that teaching is this
|
|
course--A no-nonsense Python course that has been actively taught to more than 400
|
|
in-person groups since 2007. Traders, systems admins, astronomers,
|
|
NASA rocket scientists, and even a few software engineers--they've all
|
|
taken this course. Now, the course is available for all. Enjoy!
|
|
|
|
--David Beazley ([https://dabeaz.com](https://dabeaz.com)), [@dabeaz](https://twitter.com/dabeaz)
|
|
|
|
## Prerequisites and Target Audience
|
|
|
|
The material you see here is the core of an instructor-led Python
|
|
training course. It is typically taught in-person over the span of
|
|
three or four days--requiring approximately 25-35 hours of work. This
|
|
includes the completion of approximately 130 hands on coding exercises.
|
|
|
|
The target audience is scientists, engineers, and programmers who
|
|
already have experience in at least one other programming language. No
|
|
prior knowledge of Python is required, but knowledge of common
|
|
programming topics is assumed. Most participants find the course
|
|
challenging--even if they've already been doing a bit of Python
|
|
programming.
|
|
|
|
The goal of this course is to cover foundational aspects of Python
|
|
programming with an emphasis on script writing, data manipulation, and
|
|
program organization. The course does NOT focus on Python tooling,
|
|
IDEs, or third-party packages (i.e., it's not focused on using data
|
|
science libraries in Jupyter Notebooks or on how to deploy web apps).
|
|
It IS a course that aims to cover fundamental ideas about how Python
|
|
programs work and how they are organized. Students WILL have to write
|
|
functions and classes, work with code spread across multiple source
|
|
files, deal with modules, and solve various problems related to
|
|
refactoring.
|
|
|
|
To complete this course, you simply need a basic installation of
|
|
Python 3.6 or newer and time to work on it--especially the latter.
|
|
|
|
## What This Course is Not
|
|
|
|
This is not a course for absolute beginners on how to program a
|
|
computer. It is assumed that you already have programming experience
|
|
in some other programming language or Python itself.
|
|
|
|
This is not a course that aims to cover everything there is to know
|
|
about Python. There is only so much material you can cover in 3-4 days
|
|
before heads start to explode. If you're working through the material
|
|
and wondering "why isn't X being covered?" there's probably a good
|
|
reason--it was once included and it made everyone's head explode.
|
|
|
|
This is not a course that simply covers reference material, tricks, or
|
|
recipes that you could just look up on [python.org](https://python.org),
|
|
Google, or Stack Overflow. Yes, there is a certain amount of reference
|
|
material to be functional, but the course is more focused on how to
|
|
work with and think about Python coding.
|
|
|
|
This is not a course for software engineers on how to write or
|
|
maintain a one-million line Python program. I don't write programs
|
|
like that and neither should you. Delete something already!
|
|
Python is a great language for personal productivity, prototyping ideas,
|
|
and hacking cool things together. The course is about doing THAT in
|
|
a way that's both practical and not too "hacky."
|
|
|
|
## Take me to the Course Already!
|
|
|
|
Ok, ok. Point your browser [HERE](Notes/Contents)!
|
|
|
|
## Acknowledgements
|
|
|
|
Llorenç Muntaner was instrumental in converting the course content from
|
|
Apple Keynote to the online structure that you see here.
|
|
|
|
Various instructors have presented this course at one time or another
|
|
over the last 12 years. This includes (in alphabetical order): Ned
|
|
Batchelder, Juan Pablo Claude, Mark Fenner, Michael Foord, Matt
|
|
Harrison, Raymond Hettinger, Daniel Klein, Travis Oliphant, James
|
|
Powell, Michael Selik, Hugo Shi, Ian Stokes-Rees, Yarko Tymciurak,
|
|
Bryan Van de ven, Peter Wang, and Mark Wiebe.
|
|
|
|
I'd also like to thank the thousands of students who have taken this
|
|
course and contributed to its success with their feedback and
|
|
discussion.
|