Barbosa, L.S.
Keywords: | algorithmic problem solving, algorithms, calculational method, algorithm construction, algorithm derivation, computer science education, mathematics, mathematics education, elementary number theory, teaching scenarios |
Subjects: | |
Faculties/Schools: | UK Campuses > Faculty of Science > School of Computer Science |
Item ID: | 11707 |
Depositing User: | |
Date Deposited: | 12 Oct 2011 09:04 |
Last Modified: | 15 Dec 2017 05:51 |
URI: | |
Actions (Archive Staff Only)
Get full access to 40 Algorithms Every Programmer Should Know and 60K+ other titles, with a free 10-day trial of O'Reilly.
There are also live events, courses curated by job role, and more.
- 40 Algorithms Every Programmer Should Know
Read it now on the O’Reilly learning platform with a 10-day free trial.
O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.
Book description
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental algorithms, such as sorting and searching, to modern algorithms used in machine learning and cryptography
Key Features
- Learn the techniques you need to know to design algorithms for solving complex problems
- Become familiar with neural networks and deep learning techniques
- Explore different types of algorithms and choose the right data structures for their optimal implementation
Book Description
Algorithms have always played an important role in both the science and practice of computing. Beyond traditional computing, the ability to use algorithms to solve real-world problems is an important skill that any developer or programmer must have. This book will help you not only to develop the skills to select and use an algorithm to solve real-world problems but also to understand how it works.
You’ll start with an introduction to algorithms and discover various algorithm design techniques, before exploring how to implement different types of algorithms, such as searching and sorting, with the help of practical examples. As you advance to a more complex set of algorithms, you'll learn about linear programming, page ranking, and graphs, and even work with machine learning algorithms, understanding the math and logic behind them. Further on, case studies such as weather prediction, tweet clustering, and movie recommendation engines will show you how to apply these algorithms optimally. Finally, you’ll become well versed in techniques that enable parallel processing, giving you the ability to use these algorithms for compute-intensive tasks.
By the end of this book, you'll have become adept at solving real-world computational problems by using a wide range of algorithms.
What you will learn
- Explore existing data structures and algorithms found in Python libraries
- Implement graph algorithms for fraud detection using network analysis
- Work with machine learning algorithms to cluster similar tweets and process Twitter data in real time
- Predict the weather using supervised learning algorithms
- Use neural networks for object detection
- Create a recommendation engine that suggests relevant movies to subscribers
- Implement foolproof security using symmetric and asymmetric encryption on Google Cloud Platform (GCP)
- Who this book is for
This book is for programmers or developers who want to understand the use of algorithms for problem-solving and writing efficient code. Whether you are a beginner looking to learn the most commonly used algorithms in a clear and concise way or an experienced programmer looking to explore cutting-edge algorithms in data science, machine learning, and cryptography, you'll find this book useful. Although Python programming experience is a must, knowledge of data science will be helpful but not necessary.
Table of contents
- Why subscribe?
- About the author
- About the reviewer
- Packt is searching for authors like you
- What this book covers
- Download the example code files
- Download the color images
- Conventions used
- Section 1: Fundamentals and Core Algorithms
- The phases of an algorithm
- A practical example of pseudocode
- Using snippets
- Creating an execution plan
- The SciPy ecosystem
- Implementing Python via the Jupyter Notebook
- The data dimension
- A practical example
- Space complexity analysis
- Time complexity analysis
- The best case
- The worst case
- The average case
- Selecting an algorithm
- Constant time (O(1)) complexity
- Linear time (O(n)) complexity
- Quadratic time (O(n2)) complexity
- Logarithmic time (O(logn)) complexity
- Exact, approximate, and randomized algorithms
- Explainability
- Using lists
- Lambda functions
- The range function
- The time complexity of lists
- The time complexity of tuples
- The time complexity of a dictionary
- Time complexity analysis for sets
- Terminologies of DataFrames
- Column selection
- Row selection
- Matrix operations
- The time complexity of stacks
- Practical example
- The basic idea behind the use of stacks and queues
- Terminology
- Types of trees
- Practical examples
- Swapping Variables in Python
- Understanding the Logic Behind Bubble Sort
- A Performance Analysis of Bubble Sort
- Insertion Sort
- A Performance Analysis of Shell Sort
- The performance of the selection sort algorithm
- Choosing a sorting algorithm
- The Performance of Linear Search
- The Performance of Binary Search
- The Performance of Interpolation Search
- Practical Applications
- Concern 1 – Will the designed algorithm produce the result we expect?
- Characterizing the complexity of the problem
- Concern 3 – How is the algorithm going to perform on larger datasets?
- Practical example – divide-and-conquer applied to Apache Spark
- Understanding the dynamic programming strategy
- Understanding greedy algorithms
- Using a brute-force strategy
- Using a greedy algorithm
- Problem definition
- Implementing the PageRank algorithm
- Defining the objective function
- Specifying constraints
- Practical application – capacity planning with linear programming
- Undirected graphs
- Directed graphs
- Undirected multigraphs
- Directed multigraphs
- Special types of edges
- Ego-centered networks
- Social network analysis
- Understanding the shortest path
- Betweenness
- Fairness and closeness
- Eigenvector centrality
- Calculating centrality metrics using Python
- Initialization
- The main loop
- Depth-first search
- Conducting simple fraud analytics
- Scoring negative outcomes
- Degree of suspicion
- Section 2: Machine Learning Algorithms
- Unsupervised learning in the data-mining life cycle
- Current research trends in unsupervised learning
- Voice categorization
- Document categorization
- Euclidean distance
- Manhattan distance
- Cosine distance
- K-means clustering algorithm
- The steps of the k-means algorithm
- Stop condition
- Coding the k-means algorithm
- Limitation of k-means clustering
- Steps of hierarchical clustering
- Coding a hierarchical clustering algorithm
- Evaluating the clusters
- Application of clustering
- Principal component analysis
- Limitations of PCA
- Examples of use
- Market basket analysis
- Trivial rules
- Inexplicable rules
- Actionable rules
- Limitations of the apriori algorithm
- Populating the FP-tree
- Mining Frequent Patterns
- Code for using FP-growth
- Topic modeling
- Using clustering
- Using density-based anomaly detection
- Using support vector machines
- Formulating supervised machine learning
- Understanding enabling conditions
- Differentiating between classifiers and regressors
- The problem statement
- Importing data
- Feature selection
- One-hot encoding
- Specifying the features and label
- Dividing the dataset into testing and training portions
- Scaling the features
- Confusion matrix
- Performance metrics
- Bias-variance trade-off
- Specifying the phases of classifiers
- Understanding the decision tree classification algorithm
- Using the decision tree classification algorithm for the classifiers challenge
- Classifying records
- Implementing gradient boosting with the XGBoost algorithm
- Training a random forest algorithm
- Using random forest for predictions
- Differentiating the random forest algorithm from ensemble boosting
- Using the random forest algorithm for the classifiers challenge
- Assumptions
- The loss and cost functions
- When to use logistic regression
- Using the logistic regression algorithm for the classifiers challenge
- Using the SVM algorithm for the classifiers challenge
- Bayes, theorem
- Calculating probabilities
- Multiplication rules for AND events
- The general multiplication rule
- Addition rules for OR events
- Using the naive Bayes algorithm for the classifiers challenge
- For classification algorithms, the winner is...
- Exploring the historical dataset
- Feature engineering using a data processing pipeline
- Simple linear regression
- Evaluating the regressors
- Multiple regression
- Using the linear regression algorithm for the regressors challenge
- When is linear regression used?
- The weaknesses of linear regression
- Using the regression tree algorithm for the regressors challenge
- Using gradient boost regression algorithm for the regressors challenge
- For regression algorithms, the winner is...
- Practical example – how to predict the weather
- Understanding ANNs
- The Evolution of ANNs
- Understanding the Anatomy of a Neural Network
- Defining Gradient Descent
- Threshold Function
- Rectified linear unit (ReLU)
- Hyperbolic tangent (tanh)
- Backend Engines of Keras
- Low-level layers of the deep learning stack
- Defining hyperparameters
- Defining a Keras model
- Choosing sequential or functional model
- Understanding Tensor Mathematics
- Convolution
- Recurrent Neural Networks
- Generative Adversarial Networks
- Transfer Learning
- Methodology
- Normalization
- Tokenization
- Named entity recognition
- Sentiment analysis
- Stemming and lemmatization
- BoW-based NLP
- The neighborhood of a word
- Properties of word embeddings
- Using RNNs for NLP
- Using NLP for sentiment analysis
- Case study: movie review sentiment analysis
- Introducing recommendation systems
- Finding similarities between unstructured documents
- Using a co-occurrence matrix
- Collaborative filtering recommendation engines
- Generating a similarity matrix of the items
- Generating reference vectors of the users
- Generating recommendations
- The cold start problem
- Metadata requirements
- The data sparsity problem
- Bias due to social influence
- Limited data
- Areas of practical applications
- Practical example – creating a recommendation engine
- Section 3: Advanced Topics
- Data classification
- Applications of streaming
- Huffman coding
- A practical example – Twitter real-time sentiment analysis
- Understanding the Importance of the Weakest Link
- The Basic Terminology
- Identifying the Entities
- Establishing the Security Goals
- Understanding the Sensitivity of the Data
- Presenting Substitution Ciphers
- Understanding Transposition Ciphers
- Understanding MD5-tolerated
- Understanding SHA
- An Application of the Cryptographic Hash Function
- Coding Symmetric Encryption
- The Advantages of Symmetric Encryption
- The Problems with Symmetric Encryption
- The SSL/TLS Handshaking Algorithm
- Public Key Infrastructure
- How to prevent MITM attacks
- Avoiding Masquerading
- Data and Model Encrpytion
- Defining a well-designed, large-scale algorithm
- Network bisection bandwidth
- Conducting parallel execution analysis
- Understanding task granularity
- Load balancing
- Locality issues
- Enabling concurrent processing in Python
- Designing parallel algorithms on CUDA
- Using GPUs for data processing in Python
- Implementing data processing in Apache Spark
- The hybrid strategy
- The sad story of an AI Twitter Bot
- Implementing explainability
- Problems with learning algorithms
- Inconclusive evidence
- Traceability
- Misguided evidence
- Unfair outcomes
- Reducing bias in models
- Four criteria to classify an event as a black swan event
- Applying algorithms to black swan events
- Leave a review - let other readers know what you think
Product information
- Title: 40 Algorithms Every Programmer Should Know
- Author(s): Imran Ahmad
- Release date: June 2020
- Publisher(s): Packt Publishing
- ISBN: 9781789801217
You might also like
Grokking algorithms.
by Aditya Bhargava
Grokking Algorithms is a fully illustrated, friendly guide that teaches you how to apply common algorithms …
Ultimate Go Programming, Second Edition
by William Kennedy
16+ Hours of Video Instruction Ultimate Go Programming LiveLessons, Second Edition, provides an intensive, comprehensive, and …
50 Algorithms Every Programmer Should Know - Second Edition
by Imran Ahmad
Delve into the realm of generative AI and large language models (LLMs) while exploring modern deep …
Data Structures and Algorithms: The Complete Masterclass
by Shubham Sarda
With the knowledge of data structures and algorithms at your fingertips, you can write efficient computer …
Don’t leave empty-handed
Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.
It’s yours, free.
Check it out now on O’Reilly
Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.
IMAGES
VIDEO
COMMENTS
This free book is about computer science. It is also about Python. However, there is much more. It is designed to serve as a text for a first course on data structures and algorithms using Python, typically taught as the second course in the computer science curriculum. - free book at FreeComputerBooks.com - download here
An interactive version of Problem Solving with Algorithms and Data Structures using Python. ... Shortest Path Problems; 8.20. Dijkstra's Algorithm; 8.21. Analysis of Dijkstra's Algorithm; 8.22. Prim's Spanning Tree Algorithm; 8.23. Summary; 8.24. Key Terms; 8.25. Discussion Questions;
gramming concepts. Algorithm textbooks teach primarily algorithm analysis, basic algorithm design, and some standard algorithms and data structures. They seldom include as much problem solving as this book does. The book also falls somewhere between the practical nature of a programming book and the heavy theory of algorithm textbooks.
Problem Solving with Algorithms and Data Structures, Release 3.0 Control constructs allow algorithmic steps to be represented in a convenient yet unambiguous way. At a minimum, algorithms require constructs that perform sequential processing, selection for decision-making, and iteration for repetitive control. As long as the language provides these
Algorithmic Problem Solving with Python John B. Schneider Shira Lynn Broschat Jess Dahmen February 22, 2019
A practical and unique approach to data structures that separates interface from implementation. This book provides ... (available as a free download), available online and also via the iPad and Android apps. Upon purchase, you'll gain instant ... Problem-solving, Algorithms, and Data Structures Daniel U. Wilde,1973 Author is
Problem Solving with Algorithms and Data Structures using Python by Bradley N. Miller, David L. Ranum is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Learn algorithms at your own pace. Guided problem solving tailored to your level. Master concepts in minutes a day with bite-sized, interactive lessons in programming, pseudocode, data structures, conditionals, loops, and more. Get started.
Practical Problem Solving with Algorithms. April 15, 2023 Courses. English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 43 Lessons (9h 14m) | 1.60 GB. If you don't already have a solid computer science background, most of the typical algorithms used in industry-wide job interviews can be intimidating.
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental algorithms, such as sorting and searching, to modern algorithms used in machine learning and cryptographyKey FeaturesLearn the techniques you need to know to design algorithms for solving complex problemsBecome familiar with neural networks and deep learning ...
These free exercises are nothing but Python assignments for the practice where you need to solve different programs and challenges. All exercises are tested on Python 3. Each exercise has 10-20 Questions. The solution is provided for every question. These Python programming exercises are suitable for all Python developers.
Boost your coding interview skills and confidence by practicing real interview questions with LeetCode. Our platform offers a range of essential problems for practice, as well as the latest questions being asked by top-tier companies.
Practical Problem Solving with Algorithms. Kyle Simpson. You Don't Know JS. 9 hours, 14 minutes CC. Course Description. You've likely taken several algorithms and data structures courses and know the "what", and now it's time to put the knowledge to practice! Develop better problem-solving skills by thinking through challenges and ...
With approximately 2500 problems, this book provides a collection of practical problems on the basic and advanced data structures, design, and analysis of algorithms. To make this book suitable for self-instruction, about one-third of the algorithms are supported by solutions, and some others are supported by hints and comments.
Beyond traditional computing, the ability to use algorithms to solve real-world problems is an important skill that any developer or programmer must have. This book will help you not only to develop the skills to select and use an algorithm to solve real-world problems but also to understand how it works. ... Download a free PDF. If you have ...
Check out a free preview of the full Practical Problem Solving with Algorithms course. The "Introduction" Lesson is part of the full, Practical Problem Solving with Algorithms course featured in this preview video. ... And that's just sort of, it seems in the JavaScript world as a free operation, but you're creating a tremendous amount of ...
FreeCodeCamp's 6-hour course on YouTube, taught by Pasan Premaratne and Jay McGavren, provides an in-depth introduction to algorithms and data structures. The course, now freely available, is a blend of three shorter courses: Introduction to Algorithms, Introduction to Data Structures, and Algorithms: Sorting and Searching.
Exercises for Programming in C++ (Alpha Release, Version 2021-04-01) Michael D. Adams To obtain themost recent versionof this book (with functional hyperlinks) or for additional informa-
Download Free PDF. Algorithms Every Programmer Should Know Hone your problem-solving skills by learning different algorithms and their implementation in Python ... Algorithms Mastering Basic Algorithms in the Python Language Learn to implement classic algorithms and design new problem-solving algorithms using Python. Camilo Vargas. Download ...
We cover abstract data types and data structures, writing algorithms, and solving problems. We look at a number of data structures and solve classic problems that arise. The tools and techniques that you learn here will be applied over and over as you continue your study of computer science.
Abstract. Algorithmic problem solving provides a radically new way of approaching and solving problems in general by using the advances that have been made in the basic principles of correct-by-construction algorithm design. The aim of this thesis is to provide educational material that shows how these advances can be used to support the ...
Title: 40 Algorithms Every Programmer Should Know. Author (s): Imran Ahmad. Release date: June 2020. Publisher (s): Packt Publishing. ISBN: 9781789801217. Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental algorithms, such as sorting and searching, to modern algorithms ...
You'll learn to solve algorithms and analyze space and time complexity in both an interview setting and in your day-to-day development. Following along with the course, you'll practice algorithms with common interview questions using a handful of algorithm techniques. Take a practical look at recursion and learn to optimize your solutions using ...
In particular, the information portrayed in the diagrams have assisted students to formulate equations to solve word problems. In fact, this is the algebra approach which has been shown to be a powerful means for solving word problems (Kieran, Citation 1992). However, the merit of incorporating a diagram for learning to solve word problems goes ...