Continuing our series of pieces about additional programming-related subjects that are not a part of CodeGym’s course, with links and recommendations on where you can learn them. Today we are going to talk about algorithms. Coding Skills LevelUp, Part 2. Where to Learn About Algorithms - 1

What is algorithms

An algorithm per se is nothing more than a step-by-step receipt for solving a problem. The majority of algorithms used in programming these days have already been discovered, tested, and proven. Algorithms in Java are static methods that are used to perform various operations on collections. If data structures are used by Java programmers to store and organize data, algorithms are used to manipulate the data in those structures. So these two topics are tied to each other, and understanding how they work together is quite important and can make your Java coding a lot more efficient. Algorithms can be applied to any programming language, and strong experienced programmers are normally expected to know at least the basics of this topic, as well as knowing how to convert algorithms to code in the programming language they are using.

Books about algorithms

  1. Data Structures and Algorithms Made Easy by Narasimha Karumanchi.

    One of the best textbooks for beginners in algorithms (and data structures). ‘Data Structures And Algorithms Made Easy: Data Structures and Algorithmic Puzzles’ is a book that offers solutions to complex data structures and algorithms. There are multiple solutions for each problem, and the book is coded in C/C++. You can use this one as a guide to prepare for interviews, exams, and campus work.

  2. Grokking Algorithms by Aditya Bhargava.

    ‘Grokking Algorithms’ is another easy to understand, fully illustrated, and written in a friendly tone guide that teaches you how to apply common algorithms to the practical problems you face every day as a programmer. You'll start with sorting and searching and, as you build up your skills in thinking algorithmically, you'll tackle more complex concerns such as data compression and artificial intelligence. Each example includes diagrams and fully annotated code samples in Python.

  3. Algorithms Unlocked by Thomas Cormen.

    A book on the basics of algorithms for beginners and coding professionals who want to extend their knowledge of the subject, this time written as a college textbook for MIT students.

    “Readers will learn what computer algorithms are, how to describe them, and how to evaluate them. They will discover simple ways to search for information in a computer; methods for rearranging information in a computer into a prescribed order (“sorting”); how to solve basic problems that can be modeled in a computer with a mathematical structure called a “graph” (useful for modeling road networks, dependencies among tasks, and financial relationships); how to solve problems that ask questions about strings of characters such as DNA structures; the basic principles behind cryptography; fundamentals of data compression; and even that there are some problems that no one has figured out how to solve on a computer in a reasonable amount of time,” the author of the book says.

  4. Data Structures and Algorithms in Java by Robert Lafore.

    And here is a textbook that focuses specifically on Java. Besides clear and simple example programs, Robert Lafore added to the book a workshop as a small demonstration program executable on a web browser. The programs demonstrate in graphical form what data structures look like and how they operate.

    Suggested solutions to the programming projects found at the end of each chapter are made available to instructors at recognized educational institutions. This educational supplement to the textbook can be found at pearson.com, in the Instructor Resource Center.

  5. Hello World: Being Human in the Age of Algorithms by Hannah Fry.

    ‘Hello World: Being Human in the Age of Algorithms’ by Hannah Fry is a rather interesting book that looks at algorithms from a slightly different perspective. The author is describing true powers and limitations of the algorithms that already automate important decisions in healthcare, transportation, crime, and commerce.

Online courses on algorithms

  1. Algorithms, Part I, Part II by Princeton University via Coursera.

    A pretty great totally free course from Princeton. It covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms. The course does not offer a certificate upon completion.

  2. Data Structures and Algorithms Specialization Program by UC San Diego via Coursera.

    Another reputable course program on algorithms and data structures offered by University of California, San Diego and National Research Institute Higher School of Economics. This specialization is a mix of theory and practice: you will learn algorithmic techniques for solving various computational problems and will implement about 100 algorithmic coding problems in a programming language of your choice.

    “No other online course in Algorithms even comes close to offering you a wealth of programming challenges that you may face at your next job interview. To prepare you, we invested over 3000 hours into designing our challenges as an alternative to multiple choice questions that you usually find in MOOCs. Sorry, we do not believe in multiple choice questions when it comes to learning algorithms...or anything else in computer science! For each algorithm you develop and implement, we designed multiple tests to check its correctness and running time — you will have to debug your programs without even knowing what these tests are! It may sound difficult, but we believe it is the only way to truly understand how the algorithms work and to master the art of programming,” the authors of the course said.

  3. Algorithms Specialization by Stanford University via Coursera.

    And the third well-recognized free algorithms course from a reputable uni, Stanford University this time. This course is an introduction to algorithms for learners with at least a little programming experience. Learners will practice and master the fundamentals of algorithms through several types of assessments. Every week, there is a multiple choice quiz to test your understanding of the most important concepts. There are also weekly programming assignments, where you implement one of the algorithms covered in lecture in a programming language of your choosing. Each course concludes with a multiple-choice final exam.

YouTube channels and playlists

  1. Algorithms by Abdul Bari.

    A list of short lectures on algorithms by Abdul Bari, a rather popular YouTuber who explains complex subjects in the most simple and easy to understand ways to his viewers.

  2. Data Structures and Algorithms in Java on Programming with Mosh channel.

    ‘Programming with Mosh’ is a popular mainstream YouTube channel for programming beginners. It has lots and lots of tutorials on Java and other programming languages, they are well-structured and well-presented, including the tutorial on data structures and algorithms. A good way to familiarize yourself with these subjects if you don’t feel like reading books and paying for courses.

  3. MIT 6.006 Introduction to Algorithms, Fall 2011 by MIT OpenCourseWare

    MIT OpenCourseWare is a channel of the Massachusetts Institute of Technology, and it has lots of great free video courses, including the one on algorithms. The whole course consists of 47 roughly one-hour sessions.