Algorithms & Complexity: The Computer Science You Never Took in College (That Actually Matters!)
No CS degree? No problem! No CS knowledge? No worry; join us for “The Computer Science You Never Took in College… (That Actually Matters!)”
Time: 90 min
Target Level: Novice/Intermediate†
Prerequisites: familiarity with basic Python syntax
† Note: our sessions are targeted at ambitious, motivated novices interested in covering lots of dense material very quickly!
In this session, we will discuss (and apply) abstract ideas drawn from the topic of computational complexity theory to the very practical topic of writing fast, efficient code. We’ll offer and expand upon the common ”Big-O” and Bachmann-Landau-driven framing from asymptotic analysis and see how this affects the code that we write every day.
In this session, we’ll look to answer the following questions:
In the abstract (and in the limit), what makes a dict or set faster than a list? How does this interrelate with our notions of “human-” and “machine-orderings”?
In the abstract (and in the limit), what makes a list slower than a collections.deque?
What are the different sorting (and searching) algorithms?
What is a priority queue? What is a heap?
What is a prefix tree?
What is a skip list?
You don’t need a Computer Science degree to be a good programmer. In fact, some of the best programmers out there are folks with no formal CS training!
But this doesn’t mean that the knowledge and the topics covered in a CS degree are not useful. In fact, your typical Computer Science degree covers quite a bit of theory that is useful and applicable to common programming tasks.
Are you looking to build a stronger foundational theoretical understanding of computing?
Are you looking for a condensed view of some of the major topics that would be covered in a CS degree?
Are you looking for hands-on application of these topics to concrete programming problems?
… if so, then you’re going to want to join us for this three-part seminar series!
In our first session in the series, Algorithms & Complexity (Thursday, June 9), we will start from a theoretical approach to computational complexity and show how this has practical implications to everyday code-level design and implementation.
In our second session, Graphs (but no Charts) (Friday, June 10), we will look at tree and graph theory and see how these provide a framework for solving a variety of common problems.
In our bonus session, Logic (Friday, June 17), we will review the topics of symbolic, propositional, binary/boolean logic, and see how we can apply these to better reason about our code.
In our third session, Dynamic Programming (Friday, June 24), we will take a look at the most useless new hire interview question and see if, lurking behind all the jargon and theory, there is something interesting, useful and exciting to be found.
Anyone who purchases our “VIP Package” will be invited to an invite-only, hands-on review session with James and Cameron on July 1. In this session, we will:
Review all material covered in this seminar series
Answer your questions and discuss practical approaches to your real-world use-cases
Do a post-assessment to assess any gaps in understanding, and then…
Bridge those gaps personally with each attendee
Chat and discuss!
Your Presenter (James Powell)
James Powell is the founder and lead instructor at Don’t Use This Code. He currently serves as Chairman of the NumFOCUS Board of Directors, helping to oversee the governance and sustainability of all of the major tools in the Python data analysis ecosystem (i.e., pandas, NumPy, Jupyter, Matplotlib). At NumFOCUS, he helps build global open source communities for data scientists, data engineers, and business analysts. He helps NumFOCUS run the PyData conference series and has sat on speaker selection and organizing committees for 18 conferences. James is also a prolific speaker: since 2013, he has given over seventy conference talks at over fifty Python events worldwide. In fact, he is the second most prolific speaker in the PyData and Python ecosystem (source: pyvideo.org).