2020-05-27 18:20:21 -05:00
|
|
|
# Welcome!
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2022-11-26 09:29:04 -06:00
|
|
|
When I first learned Python nearly 27 years ago, I was immediately
|
2020-05-27 18:20:21 -05:00
|
|
|
struck by how 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
|
|
|
|
|
treatment of Python that has been actively taught to more than 400
|
2020-05-27 17:44:22 -05:00
|
|
|
in-person groups since 2007. Traders, systems admins, astronomers,
|
2020-05-29 06:54:08 -05:00
|
|
|
tinkerers, and even a few hundred rocket scientists who used Python to
|
|
|
|
|
help land a rover on Mars--they've all taken this course. Now, I'm
|
2023-02-27 11:07:22 -06:00
|
|
|
pleased to make it available under a Creative Commons license--completely
|
|
|
|
|
free of spam, signups, and other nonsense. Enjoy!
|
2020-06-19 21:00:59 -05:00
|
|
|
|
|
|
|
|
[GitHub Pages](https://dabeaz-course.github.io/practical-python) | [GitHub Repo](https://github.com/dabeaz-course/practical-python).
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2023-02-27 11:07:22 -06:00
|
|
|
--David Beazley ([https://dabeaz.com](https://dabeaz.com)), [@dabeaz](https://mastodon.social/@dabeaz)
|
|
|
|
|
|
|
|
|
|
(P.S. This course is about Python. If you want a Python course that's about programming,
|
|
|
|
|
you might consider [Advanced Programming with Python](https://www.dabeaz.com/advprog.html))
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-29 04:24:42 -05:00
|
|
|
## What is This?
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-28 18:12:20 -05:00
|
|
|
The material you see here is the heart of an instructor-led Python
|
2020-05-29 04:24:42 -05:00
|
|
|
training course used for corporate training and professional
|
2022-12-11 07:19:57 -06:00
|
|
|
development. It was in continual development from 2007 to 2019 and
|
2020-05-29 04:50:02 -05:00
|
|
|
battle tested in real-world classrooms. Usually, it's taught
|
|
|
|
|
in-person over the span of three or four days--requiring approximately
|
2020-05-29 06:49:44 -05:00
|
|
|
25-35 hours of intense work. This includes the completion of
|
|
|
|
|
approximately 130 hands-on coding exercises.
|
2020-05-29 04:24:42 -05:00
|
|
|
|
|
|
|
|
## Target Audience
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-29 04:42:23 -05:00
|
|
|
Students of this course are usually professional 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.
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-29 04:24:42 -05:00
|
|
|
## Course Objectives
|
|
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
The goal of this course is to cover foundational aspects of Python
|
2022-12-11 07:19:57 -06:00
|
|
|
programming with an emphasis on script writing, basic data manipulation, and
|
2020-05-29 04:42:23 -05:00
|
|
|
program organization. By the end of this course, students should be
|
|
|
|
|
able to start writing useful Python programs on their own or be able
|
|
|
|
|
to understand and modify Python code written by their
|
|
|
|
|
coworkers.
|
2020-05-29 04:24:42 -05:00
|
|
|
|
|
|
|
|
## Requirements
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-28 18:12:20 -05:00
|
|
|
To complete this course, you need nothing more than a basic
|
2020-05-29 04:42:23 -05:00
|
|
|
installation of Python 3.6 or newer and time to work on it.
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
## What This Course is Not
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
This is not a course for absolute beginners on how to program a
|
|
|
|
|
computer. It is assumed that you already have programming experience
|
2020-05-29 04:24:42 -05:00
|
|
|
in some other programming language or Python itself.
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-29 06:45:48 -05:00
|
|
|
This is not a course on web development. That's a different
|
|
|
|
|
circus. However, if you stick around for this circus, you'll still see
|
2020-05-29 19:31:27 +05:30
|
|
|
some interesting acts--just nothing involving animals.
|
2020-05-29 06:45:48 -05:00
|
|
|
|
2022-12-11 07:19:57 -06:00
|
|
|
This is not a course on using tools that happen to be written
|
|
|
|
|
in Python. It's about learning the core Python language.
|
|
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
This is not a course for software engineers on how to write or
|
2020-05-29 04:42:23 -05:00
|
|
|
maintain a one-million line Python application. I don't write programs
|
2020-05-29 04:24:42 -05:00
|
|
|
like that, nor do most companies who use Python, and neither should
|
2020-05-29 19:31:27 +05:30
|
|
|
you. Delete something already!
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
## Take me to the Course Already!
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-29 19:31:27 +05:30
|
|
|
Ok, ok. Point your browser [HERE](Notes/Contents.md)!
|
2020-05-24 15:06:01 -05:00
|
|
|
|
2020-05-27 19:44:37 -05:00
|
|
|
## Community Discussion
|
|
|
|
|
|
2025-12-22 13:51:27 -06:00
|
|
|
Want to discuss the course? Feel free to use [GitHub Discussions](https://github.com/dabeaz-course/practical-python/discussions).
|
|
|
|
|
I can't promise an individual response, but perhaps others can jump in to help.
|
2020-05-27 19:44:37 -05:00
|
|
|
|
2020-05-27 17:44:22 -05:00
|
|
|
## 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.
|
2020-05-27 19:39:09 -05:00
|
|
|
|
|
|
|
|
## Questions and Answers
|
|
|
|
|
|
2020-05-28 18:12:20 -05:00
|
|
|
### Q: Are there course videos I can watch?
|
|
|
|
|
|
|
|
|
|
No. This course is about you writing Python code, not watching someone else.
|
|
|
|
|
|
2020-05-27 19:39:09 -05:00
|
|
|
### Q: How is this course licensed?
|
|
|
|
|
|
2020-05-29 19:31:27 +05:30
|
|
|
Practical Python Programming is licensed under a Creative Commons Attribution ShareAlike 4.0 International License.
|
2020-05-27 19:39:09 -05:00
|
|
|
|
|
|
|
|
### Q: May I use this material to teach my own Python course?
|
|
|
|
|
|
|
|
|
|
Yes, as long as appropriate attribution is given.
|
|
|
|
|
|
|
|
|
|
### Q: May I make derivative works?
|
|
|
|
|
|
|
|
|
|
Yes, as long as such works carry the same license terms and provide attribution.
|
|
|
|
|
|
2020-05-31 07:55:05 -05:00
|
|
|
### Q: Can I translate this to another language?
|
|
|
|
|
|
|
|
|
|
Yes, that would be awesome. Send me a link when you're done.
|
|
|
|
|
|
|
|
|
|
### Q: Can I live-stream the course or make a video?
|
|
|
|
|
|
|
|
|
|
Yes, go for it! You'll probably learn a lot of Python doing that.
|
|
|
|
|
|
2020-05-29 06:54:08 -05:00
|
|
|
### Q: Why wasn't topic X covered?
|
|
|
|
|
|
2020-05-29 07:35:47 -05:00
|
|
|
There is only so much material that you can cover in 3-4 days. If
|
2020-05-29 06:54:08 -05:00
|
|
|
it wasn't covered, it was probably because it was once covered and it
|
|
|
|
|
caused everyone's head to explode or there was never enough time to
|
2020-05-31 07:55:05 -05:00
|
|
|
cover it in the first place. Also, this is a course, not a Python
|
|
|
|
|
reference manual.
|
2020-05-29 06:54:08 -05:00
|
|
|
|
2022-12-11 07:19:57 -06:00
|
|
|
### Q: Why isn't awesome `{command}` in awesome `{tool}` covered?
|
|
|
|
|
|
|
|
|
|
The focus of this course is on learning the core Python language,
|
|
|
|
|
not learning the names of commands in tools.
|
|
|
|
|
|
|
|
|
|
### Q: Is this course being maintained or updated?
|
|
|
|
|
|
2023-02-27 11:07:22 -06:00
|
|
|
This course represents a "finished product" that was taught and
|
|
|
|
|
developed for more than decade. I have no plans to significantly
|
|
|
|
|
revise the material at this time, but will occasionally fix bugs and
|
|
|
|
|
add clarification.
|
2022-12-11 07:19:57 -06:00
|
|
|
|
2020-05-28 18:12:20 -05:00
|
|
|
### Q: Do you accept pull requests?
|
2020-05-27 19:39:09 -05:00
|
|
|
|
2020-05-31 07:55:05 -05:00
|
|
|
Bug reports are appreciated and may be filed through the
|
|
|
|
|
[issue tracker](https://github.com/dabeaz-course/practical-python/issues).
|
|
|
|
|
Pull requests are not accepted except by invitation. Please file an issue first.
|
2020-05-27 20:14:07 -05:00
|
|
|
|