Externally indexed torrent
If you are the original uploader, contact staff to have it moved to your account
Textbook in PDF format
This textbook offers an introduction to topics in algorithms and programming with Python. It is originally intended for mathematical students not sufficiently aware about these Computer Science fields seeking a deeper understanding. It addresses fundamental questions on how to analyze the performance of an algorithm and equips readers with the skills to implement them using Python.
The textbook is organized in two parts. Part I introduces Python Programming offering a solid foundation to Python essentials. Topics covered include first steps in Python programming, programs, functions and recursion, data structures. Part II shifts focus to Algorithms and covers topics such as algorithm performance, recursion, the sorting problem, trees as data structures, etc.
Writing programs is a hard task that involves many different skills that are not necessarily part of the expertise acquired by undergraduate and even graduate students in scientific fields other than computer science. Here we will focus on: algorithmic, algorithmic analysis and programming (not necessarily in that precise order).
Programming is the art of implementing an algorithm into a machine. Some may say that this task is more adequately called coding. We would not like to participate in this never-ending debate. Let us just say that programming is more wide/general/abstract than coding, in the sense that programming involves more engineering aspects while coding is a more technical matter. And to make this more complete, we may add that algorithmic is more a scientific matter, generally reserved to (computer) scientists. We know that this classification is too broad and that sometimes a technician may design algorithms. We would just like to emphasise the fact that the same person may use different level of abstractions when “programming” (in the very broad sense). One must be aware on this.
To roughly sum up the different levels of abstraction one can use the following
• In algorithmic we can reason on the natural numbers (thus unbounded).
• In programming we reason knowing that the used numbers will be bounded.
• In coding we exactly know all the constraints.
We then propose to explain all of these, with a mix of theoretical and practical aspects. The reader will then find some formal definitions of notions, practical applications, exercises and many of their solutions. Applications and programming considerations will be based on the Python programming language. Python is freely available on every mainstream platform and widely used.
We already said, that in this part, we will focus on the Python programming language. Python is a multi-paradigm high-level language. It is used by many people over the world, and scientists in many fields it is not intended to computerists only. It is a very general-purpose programming language provided with many extensions allowing to solve lots of very different problems. This is why we chose it.
While not mandatory, we recommend to install any suitable IDE. An IDE (Integrated Development Environment) is a tool (an application) that integrates functionalities that help writing programs such as: context-sensitive editing, integrated help, console output, run/debug functions, etc. Good IDEs for Python are PyCharm or Visual Studio Code.
Part I. Python Programming
Introduction
First Steps in Python
Programs
Functions and Recursion
Data Structures
Drawings and More
Part II. Algorithms
Algorithm Performance
Introduction to Recursion
The Sorting Problem
More on Recursion
Trees as Data Structures