{"id":26616,"date":"2020-12-03T19:11:52","date_gmt":"2020-12-04T03:11:52","guid":{"rendered":"https:\/\/careerkarma.com\/blog\/?p=26616"},"modified":"2021-02-09T06:19:09","modified_gmt":"2021-02-09T14:19:09","slug":"learn-algorithms","status":"publish","type":"post","link":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/","title":{"rendered":"Learn Algorithms: Courses, Training, and Other Resources"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">How to Learn Writing Algorithms<\/h2>\n\n\n\n<p>Writing algorithms can be overwhelming for even the most seasoned developer. Many of them memorize all of the different approaches to a particular problem. However, what if we instead took a look at a guided outline of how to look at a problem so we can solve the problem?<br><\/p>\n\n\n\n<p>This article takes a look at algorithms: what they are, what they are used for, resources, and how to get started to learn how to write algorithms.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is an Algorithm?<\/h2>\n\n\n\n<p>An algorithm is a set of instructions. If you compare an algorithm to a recipe, you can see what an algorithm is like:<br><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong><em>Recipe for Burgers<\/em><\/strong><br><\/p>\n\n\n\n<p><em>Prep Time: 10 min<\/em><br><\/p>\n\n\n\n<p><em>Input:<\/em><\/p>\n\n\n\n<p><em>Ingredients[]<\/em><em> &#8212; a list of objects that contain the <\/em><em>name<\/em><em> of the object and the <\/em><em>amount<\/em><em> needed<\/em><\/p>\n\n\n\n<p><em>\t<\/em><em>Ex: <\/em><em>[{name: \u201cbeef, 85\/15\u201d, amount: \u201c2 lb\u201d}, {name: \u201cAmerican cheese, amount: \u201c8 slices\u201d}, etc.]<\/em><br><\/p>\n\n\n\n<p><em>Directions[] <\/em><em>&#8212; a list of strings that outline steps to finish and present burgers to hungry eaters<\/em><\/p>\n\n\n\n<p><em>\t<\/em><em>Ex: <\/em><em>[\u201cUnwrap meat and separate into 8 different sections\u201d, \u201cRoll up sections into a ball\u201d, \u201cFlatten each ball into a disc shape. All discs should be of an equal size\u201d, etc.]<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><em>Output: Yields 8 servings<\/em><br><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>An algorithm, when written in code, assumes that you know about at least one programming language and its popular methods, and data structures and how to work with them. The concept is similar to how a recipe assumes you know about certain cooking methods and how to use kitchen supplies.<br><\/p>\n\n\n\n<p>An algorithm has an input and an output. The output (solving the big problem) comes from solving smaller problems along the way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is an Algorithm Used for?<\/h3>\n\n\n\n<p>Algorithms are in use everywhere because they solve problems. In computer science and web development, they are used when writing code to instruct the computer to do something.<br><\/p>\n\n\n\n<p>If we had a list of names, for instance, we can use a sorting algorithm like <a href=\"https:\/\/careerkarma.com\/blog\/selection-sort-python\/\">selection sort<\/a> or <a href=\"https:\/\/careerkarma.com\/blog\/python-bubble-sort-a-how-to-guide\/\">bubble sort<\/a> to sort the names by first name or by last name. We can also use a binary search algorithm to search for a name in this same list. These are just some of the standard algorithms that exist for you to take advantage of.&nbsp;&nbsp;<br><\/p>\n\n\n\n<p>Know that you\u2019re never truly done learning about how to write algorithms after finishing a course \u2013 you just get better at doing it. We\u2019ll take a look at one way you can approach writing algorithms in the next section.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to Learn to Write An Algorithm: Step-by-Step<\/h3>\n\n\n\n<p>Here are the recommended steps to learning how to write algorithms.&nbsp;<br><\/p>\n\n\n\n<p>1. <strong>Learn a programming language<\/strong><br>Java, JavaScript, and Python are all popular languages used for writing computer algorithms. Choose a language and learn it inside and out.<br><br>Make these concepts a part of your understanding of the language you choose:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Data Types <\/strong>&nbsp;\u2013 Number, Boolean, Strings<\/li><li><strong>Variables<\/strong><\/li><li><strong>Conditionals<\/strong> \u2013 if-else statements, ternary statements<\/li><li><strong>Functions<\/strong> \u2013 anonymous, named, and higher order functions<\/li><li><strong>Objects<\/strong> \u2013 be able to create objects, manipulate objects, and use object methods<\/li><li><strong>Arrays or Lists <\/strong>\u2013 be able to create arrays\/lists, manipulate them, and use their associated methods<\/li><li><strong>Loops <\/strong>\u2013<strong> <\/strong>&nbsp;both traditional for loops and advanced array\/list methods<\/li><li><strong>Classes<\/strong><br><br><\/li><\/ul>\n\n\n\n<p>2. <strong>Data Structures<\/strong><\/p>\n\n\n\n<p>You need to have a good handle on data structures to make your algorithms more efficient. Be sure to know what each data structure is used for and how it works.<br><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Arrays\/Lists. <\/strong>Know how to manipulate an array\/list and what the Big O is of the different insertion, deletion, and get methods. It\u2019s important to know how arrays\/lists work under the hood so you can figure out the time and space complexity of an algorithm.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Linked List<\/strong>. Be able to explain the purpose of a linked list, and how it is different from an array. Also you should know the Big O of its common methods.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Hash Table. <\/strong>Understand how a hash table works and what the Big O is when working with one.&nbsp;<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Stacks\/Queues<\/strong>. Be able to discuss the differences and similarities between a stack and a queue and what data structures can be used for this special abstract data type.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Trees<\/strong>. Using trees to cut down the time an algorithm takes to run is a good method. Binary trees are a very popular tool in algorithm manipulation.<\/li><\/ul>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Graphs. <\/strong>What graphs could represent and why graphs might be used in constructing an algorithm.<\/li><\/ul>\n\n\n\n<p>3. <strong>Writing Algorithms: The Problem-Solving Process<\/strong><\/p>\n\n\n\n<p>You\u2019ve learned a basic programming language and enough data structures to get started. Congratulations! The fun is getting started.<br><\/p>\n\n\n\n<p>Start small. It\u2019s important to understand the four concepts from George P\u00f3lya\u2019s problem solving treatise (see the <a href=\"https:\/\/docs.google.com\/document\/d\/1AjPmumkDzkgwEpJpaQ6TiM68OGxkZTxtlgvTX_SGR1w\/preview#heading=h.ntjwa7q1cxiu\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Resources<\/a> section). A couple more steps were added here to breakdown his general approach even further:&nbsp;<br><\/p>\n\n\n\n<p><strong>George P\u00f3lya\u2019s Guide to Solving Problems<\/strong><br><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Understand the Problem<\/li><li>What is it that you\u2019re looking for?<\/li><li>Take the problem and put it into your own words \u2013 try to explain it to someone who is not technically savvy.<\/li><li>Grab keywords from the problem to help you construct a basic plan \u2013 no code. Just steps needed to get to an answer.<\/li><li>Iterate on that plan to create a code solution.&nbsp;<ol><li>If you can\u2019t figure out a solution, go back to #1 to ensure you are properly understanding the problem. Are you returning the correct output? Is there something you may have missed in the coding prompt?&nbsp;<\/li><\/ol><\/li><li>What is the Big O notation of your solution? Is there anything you can do to make the solution a more efficient algorithm in reference to <a href=\"https:\/\/careerkarma.com\/blog\/big-o-notation-space\/\">space complexity<\/a> or <a href=\"https:\/\/careerkarma.com\/blog\/big-o-notation-time\/\">time complexity<\/a>?&nbsp;<\/li><\/ol>\n\n\n\n<p>4. <strong>Start Small<\/strong><\/p>\n\n\n\n<p>Start with a basic searching algorithm that loops over a string or an array to search for an input. If the input can\u2019t be found, return false. If it is found, return true.&nbsp;<br><\/p>\n\n\n\n<p>Expand on this beginner algorithm and use other data structures to see how others might need a different process. Try sorting the input to use more efficient search algorithms.&nbsp;<br><\/p>\n\n\n\n<p>Use algorithm practicing sites like the ones listed in the resource section to advance your skills.<br><\/p>\n\n\n\n<p>5. <strong>Advance to More Difficult Algorithms<\/strong>&nbsp;<\/p>\n\n\n\n<p>After several iterations, you\u2019ll be able to advance to more difficult algorithms. At this point, you should be able to recreate some of the sorting algorithms, including Bubble Sort and Merge Sort. Binary Search should also be a part of your everyday coding experience.<br><\/p>\n\n\n\n<p>Continue to use algorithm practicing sites to skill up. Try your hand at problems that are labeled a little more difficult to see how you do.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Best Algorithm Courses and Trainings<\/h2>\n\n\n\n<p>Everyone learns a little bit differently. Compiled here are some of the best courses and training on algorithms available. Some have a fee, but there are free ones as well. This list is in no particular order.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Online Algorithm Courses<\/h3>\n\n\n\n<p>Here are some of the best algorithm courses available online:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/www.coursera.org\/specializations\/algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Algorithms Specialization, Stanford University<\/a><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Coursera<\/li><li>4 courses:&nbsp;&nbsp;<ul><li>Divide and Conquer, Sorting and Searching, and Randomized Algorithms<\/li><li>Graph Search, Shortest Paths, and Data Structures<\/li><li>Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming<\/li><li>Shortest Paths Revisited, NP-Complete Problems and What To Do About Them<\/li><\/ul><\/li><li>4 months<\/li><li>Prerequisites: The course is language agnostic, but assumes you know at least one programming language, basic data structures, and enough mathematics to know what proofs are.&nbsp;<\/li><li>Certificate: $49\/month until finished; Audit: FREE<\/li><\/ul>\n\n\n\n<p>Professor Tim Roughgarden of Stanford University teaches the Algorithms Specialization courses on Coursera. These courses will cover just about everything you need to touch upon to thoroughly understand algorithms so that you will do well in technical interviews.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/www.edx.org\/course\/algorithms-2\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Algorithms, IIT Bombay<\/a><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>edX<\/li><li>6 weeks, 6-8 hrs\/week<\/li><li>Prerequisites: Basic understanding of data structures<\/li><li>Verified Certificate: $149; No Certificate: FREE<\/li><\/ul>\n\n\n\n<p>This course is part of the IIT Bombay Fundamentals of Computer Science XSeries Program. Topics covered here include Sorting and Searching, Numerical Algorithms, String Algorithms, Geometric Algorithms, and Graph Algorithms.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Free Algorithm Courses<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/www.udacity.com\/course\/intro-to-algorithms--cs215\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Intro to Algorithms<\/a><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Udacity<\/li><li>Approx. 4 months, self-paced learning<\/li><li>Prerequisites: At least one programming language; Course uses Python in examples<\/li><li>FREE<\/li><\/ul>\n\n\n\n<p>This is a free crash course in algorithms from Udacity\u2019s Michael Littman. He uses the six degrees of Kevin Bacon phenomenon to show how algorithms work. Think of the six degrees of separation \u2013 it\u2019s been said that everyone is six or fewer social connections away from the other. He uses the same concept but with Kevin Bacon movies and actors.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/www.freecodecamp.org\/learn\/javascript-algorithms-and-data-structures\/basic-algorithm-scripting\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">FreeCodeCamp, Basic Algorithm Scripting<\/a><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>FreeCodeCamp<\/li><li>Self-paced<\/li><li>Prerequisites: basic understanding of JavaScript and data structures<\/li><li>FREE<\/li><\/ul>\n\n\n\n<p>This set of exercises by FreeCodeCamp will set you up for success through solving smaller problems before graduating to more difficult ones. Self-paced exercises use FreeCodeCamp\u2019s learning platform to test your code.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><a href=\"https:\/\/www.educative.io\/courses\/visual-introduction-to-algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">A Visual Introduction to Algorithms<\/a><\/h4>\n\n\n\n<ul class=\"wp-block-list\"><li>Educative<\/li><li>Self-paced, mainly text-based and examples<\/li><li>Prerequisites: JavaScript, Python, C++, or Java<\/li><li>FREE<\/li><\/ul>\n\n\n\n<p>In this free course, visual aids and videos are used to illustrate how algorithms work. Built-in code environments make the user experience fairly good. Potential solutions included.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algorithm Books<\/h2>\n\n\n\n<p>There are several books to assist you in your journey to become a better algorithm scriptwriter. Most of them are available at a local bookstore and on Amazon.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/www.manning.com\/books\/grokking-algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">\u2018Grokking Algorithms\u2019<\/a><\/h3>\n\n\n\n<p>\u2018<a href=\"https:\/\/www.manning.com\/books\/grokking-algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">An Illustrated Guide for Programmers and Other Curious People<\/a>\u2019<\/p>\n\n\n\n<p><a href=\"https:\/\/www.manning.com\/books\/grokking-algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">By <strong>Aditya Bhargava<\/strong><\/a><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/lI2jNm9biZO22uYFK27ZKZUEPu0ZjSo5_HUEoQM9BCc63QVLUQwzKjRTmIM571hAW8gWeADhQqlMjwqaT0yYqrEg5CrQZoztPt0yNmauiAsAli8ixaWfM1FizTHpftSemlrotQBs\" alt=\"Cover of Grokking Algorithms\n\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.manning.com\/books\/grokking-algorithms\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><\/a><\/p>\n\n\n\n<p><em>Grokking Algorithms<\/em> is one of the best books on algorithms in print. Created by an artist-turned-software developer, Bhargava takes an illustrated approach to help you intuitively understand, or grok, algorithms. Exercises at the end of each chapter help solidify the material in the book.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2018Algorithms in a Nutshell<a href=\"https:\/\/www.oreilly.com\/library\/view\/learning-react-native\/9781491989135\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">, 2nd ed.\u2019<\/a><\/h3>\n\n\n\n<p>\u2018A Practical Guide\u2019<\/p>\n\n\n\n<p><a href=\"https:\/\/www.oreilly.com\/library\/view\/learning-react-native\/9781491989135\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">By <\/a><strong>George T. Heineman, Gary Pollice, Stanley Selkow<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/5puY1Xknj2AF0pSXTuCWKXnz4BTpequUb9BUdOeEp5GGv26RGh9idpn2fnk1Ki3jk-Q_hszVTdHmTjqlPClYhdY2plNhNY6ESo97zjdXDoJpW7ub7650G4RE9h90vvR54aj4tx9Z\" alt=\"Algorithms in a Nutshell Book Cover\n\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.oreilly.com\/library\/view\/learning-react-native\/9781491989135\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><\/a><\/p>\n\n\n\n<p>This book takes a design pattern approach for you to learn when to implement certain algorithms. You will learn how to code out solutions then improve on those solutions by using advanced data structures. Solutions are in Ruby, Java, C++, and C, but are easily translated to preferred languages.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><em><\/em><\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">\u2018Algorithms, 4th ed.\u2019<\/h3>\n\n\n\n<p><a href=\"https:\/\/www.amazon.com\/gp\/product\/1788994469\/ref=as_li_tl?tag=reactresources-20\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">By <\/a><strong>Robert Sedgwick and Kevin Wayne<\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/caKkuYjNxeIaJpBPwJGaUXZVf1c_aB0WV3ZeXejKGWw4f1JHcRJ92gmYFD9EhbettUDImiuOxcFhQhkoyZIDPEOrttLv3lipZkjpxaBgt8SE7l4rgL6-fXhk_u9zq7CnAzeDqHHo\" alt=\"Algorithms fourth edition Book Cover\"\/><\/figure>\n\n\n\n<p><a href=\"https:\/\/www.amazon.com\/gp\/product\/1788994469\/ref=as_li_tl?tag=reactresources-20\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><\/a><\/p>\n\n\n\n<p>The fourth edition of Sedgewick and Wayne\u2019s Algorithms text is a fantastic introduction to the algorithm world. The authors go over 50 of the most important algorithms for you to know. The Princeton educators have developed an <a href=\"https:\/\/algs4.cs.princeton.edu\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">online course<\/a> that complements this text well.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Online Algorithm Resources<\/h2>\n\n\n\n<p>This is a list of some of the decent resources available to you to learn, practice, or get assistance with algorithms. No official ranking or order:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"http:\/\/www.crackingthecodinginterview.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Cracking the Coding Interview<\/a><\/h3>\n\n\n\n<p>Cracking the Coding Interview by Gayle Laakman is one of the most popular technical interview resources out there.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/uhuCJ0HM4PvFck_qFl7vHoCd0deOEUeBQ86mZDTsf9zEh63RrxQ42BXTrLGc4EQpMchBR1Yy2vOzb5Xvf0lHV_q7hO5iPbKwHqEpe5bhrMtQLv63ZHDG-QuIXWzeP0ys6xtV75kl\" alt=\"Cracking the Coding Interview home page\n\"\/><\/figure>\n\n\n\n<p><a href=\"http:\/\/www.crackingthecodinginterview.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><\/a><\/p>\n\n\n\n<p>Laakman writes about what it\u2019s like to go through the interview process at FAANG companies like Facebook and Google, tips for the process, and code challenges to prepare you for the technical interview. Solutions are included.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Big O Cheat Sheet<\/h3>\n\n\n\n<p>Time and space complexity can be an overwhelming and sometimes confusing part of learning algorithms. Knowing the Big O of an algorithm can hint at whether or not you are able to refactor your code to make it more efficient.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/gmiww2bWZ3v7aO0cIMgp81mHB232gHynulD30rKinbmGL12kComJeGdYf9Z6lvkapZW0IaDUV37PlA16VePuzVKcj0JSjsWhcrI7vFfci3N-6DiG__JRw_6YHJ-N_QAmC8GDxiao\" alt=\"Big O Complexity Chart \"\/><\/figure>\n\n\n\n<p>This <a href=\"https:\/\/www.bigocheatsheet.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">Big O Cheat Sheet<\/a> was created when an engineer was trying to prepare for interviews at Big Tech and other larger companies that required data structures and algorithms as part of the interview process.&nbsp;<br><\/p>\n\n\n\n<p>When in an interview, time and space complexity, the \u201cBig O\u201d, was often asked, and keeping everything straight in the engineer\u2019s mind was difficult. Creating this cheat sheet was the solution they needed to nail the interview.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">P\u00f3lya\u2019s Problem Solving Techniques&nbsp;<\/h3>\n\n\n\n<p>In the 1940s, Stanford professor George P\u00f3lya, who was known for his techniques and teachings on problems solving, wrote a book on the subject.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/1l_qMV6M427N3F9nFFVkLOs3bGuhJQOn9_tdIaId4euHnqoKVnEpHGP2eHAD_5U45lc8idXyHTz7gXSGPhxQSYgPZ2XzlZodET0ETpUax63CAf43tVq2FFWkNtRBeRNBVfLij5Dx\" alt=\"Polya's Problem Solving Techniques\"\/><\/figure>\n\n\n\n<p>He outlines a specific approach to create a plan for solving any problem you might come across. The main reason for the creation of this <a href=\"https:\/\/math.berkeley.edu\/~gmelvin\/polya.pdf\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\">problem solving method<\/a> was because he was tired of memorizing information he could deduce from taking a look at the problem!&nbsp;<br><\/p>\n\n\n\n<p>This was the problem solving method that helped me understand how to approach solving code challenges by planning out my solution step-by-step. I highly recommend you at least giving it a try.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sites to Help With Algorithm Practice<\/h3>\n\n\n\n<p>There are several websites that can assist in your practice before technical interviews. Here are just a few:<br><\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/www.hackerrank.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>Hackerrank<\/strong><\/a><br><br>Hackerrank provides access to hundreds of coding challenges to help you practice your problem solving skills. Each problem offers a sample approach or hints to assist in thinking about an approach.&nbsp;<br><br>Challenges come with their own test cases, so it helps when it comes to learning how to think of trickier edge cases. Many companies use the Hackerrank platform to issue their own code challenges or assessments, so I would at least become familiar with the environment to prepare for technical challenges.&nbsp;<br><\/li><li><a href=\"https:\/\/www.interviewcake.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>InterviewCake<\/strong><\/a><br><br>The InterviewCake platform helps you to break down problems by their constituent steps if you get stuck. The platform is great for advancing your ability to think about more difficult coding challenges because it walks you through a problem step-by-step if you get stuck. This one costs money to access, but you can find it on sale.<br><\/li><li><a href=\"https:\/\/leetcode.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>LeetCode<\/strong><\/a><br><br>LeetCode is similar to Hackerrank in providing access to hundreds, even thousands, of code challenges to help you practice your problem solving skills. A premium option gives you the ability to group questions by the company that has been known to ask them. This helps if you are preparing for an interview at a particular company.&nbsp;<br><\/li><li><a href=\"https:\/\/www.codewars.com\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>CodeWars<\/strong><\/a><br><br>If you are looking for a site that will help you skill up, look no further than CodeWars. The site uses a kata-based martial arts style system that assists in leveling up your skills.&nbsp;<br><\/li><li><a href=\"https:\/\/www.algoexpert.io\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>AlgoExpert<\/strong><\/a><br><br>This site is geared more for folks who are hardcore studying for technical interviews and want to get a highly competitive job at one of the top companies in the field. Likely, the typical user already has several years experience or a background in software engineering and just needs a competitive edge.&nbsp;&nbsp;<br><br>Videos and explanations are given by a top \u201cAlgoExpert\u201d from Facebook and Google whose goal in creating the website is to help engineers level up fast.&nbsp;<br><\/li><li><a href=\"https:\/\/projecteuler.net\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>Project Euler<\/strong><\/a><br><br>Leonhard Euler is credited as being one of the greatest mathematicians who ever lived. His research and specialty in how to solve analytic number problems did much for his industry.&nbsp;<br><br>This site is geared toward learning how to use mathematics in combination with computer programming to solve problems. The site has a bit of an old school feel, is not as complex in its judging system as other sites, and doesn\u2019t have a built-in IDE. However, it asks questions that are not seen in other sites because it focuses more on mathematics.&nbsp;<br><\/li><li><a href=\"https:\/\/exercism.io\/\" target=\"_blank\" rel=\"noopener\" rel=\"nofollow\"><strong>Exercism.io<\/strong><\/a><br><br>Exercism.io is a little different than other coding sites as it has you turn in your code solutions so a mentor can go over it with you. You can use your favorite IDE to create your solutions to coding challenges, turn it in using the command line or terminal, and then wait for feedback from a professional in the field. Many times it has been my experience that the mentor will go over how to improve your solution.&nbsp;&nbsp;<\/li><\/ol>\n\n\n\n<p>Most of these are free to use, but some are either premium or have a premium option to give a more customized experience.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Should You Study Algorithms?<\/h2>\n\n\n\n<p>The short answer is a resounding YES. This is the most important aspect of what makes one a software engineer.<br><\/p>\n\n\n\n<p>The long answer: Studying and practicing algorithms will make you a better problem solver and a better software engineer. Being an algorithms expert makes you more desirable to companies as you are able to make their applications more efficient. By using your algorithm skills, you are able to pinpoint where any bottlenecks are in the code that may come up as a result of a runtime issue or a loading issue.&nbsp;<br><\/p>\n\n\n\n<p>The learning never really stops with studying algorithms \u2013 just like music, practicing when you can will make you a better coder, interviewer, and employee.<\/p>\n","protected":false},"excerpt":{"rendered":"How to Learn Writing Algorithms Writing algorithms can be overwhelming for even the most seasoned developer. Many of them memorize all of the different approaches to a particular problem. However, what if we instead took a look at a guided outline of how to look at a problem so we can solve the problem? This&hellip;","protected":false},"author":77,"featured_media":26617,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[50470],"tags":[],"class_list":{"0":"post-26616","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-tech-guides"},"acf":{"post_sub_title":"","sprint_id":"","query_class":"how to learn {subject}","school_sft":"","parent_sft":"","school_privacy_policy":"","has_review":null,"is_sponser_post":"","is_guest_post":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Learn Algorithms<\/title>\n<meta name=\"description\" content=\"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/careerkarma.com\/blog\/learn-algorithms\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Learn Algorithms: Courses, Training, and Other Resources\" \/>\n<meta property=\"og:description\" content=\"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/careerkarma.com\/blog\/learn-algorithms\/\" \/>\n<meta property=\"og:site_name\" content=\"Career Karma\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/facebook.com\/careerkarmaapp\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-04T03:11:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-02-09T14:19:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1020\" \/>\n\t<meta property=\"og:image:height\" content=\"680\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Christina Kopecky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@career_karma\" \/>\n<meta name=\"twitter:site\" content=\"@career_karma\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christina Kopecky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/\"},\"author\":{\"name\":\"Christina Kopecky\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae0cdc4a5d198690d78482646894074e\"},\"headline\":\"Learn Algorithms: Courses, Training, and Other Resources\",\"datePublished\":\"2020-12-04T03:11:52+00:00\",\"dateModified\":\"2021-02-09T14:19:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/\"},\"wordCount\":2692,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/james-lee-VPrVFrh5JLc-unsplash.jpg\",\"articleSection\":[\"Tech Guides\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/\",\"url\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/\",\"name\":\"Learn Algorithms\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/james-lee-VPrVFrh5JLc-unsplash.jpg\",\"datePublished\":\"2020-12-04T03:11:52+00:00\",\"dateModified\":\"2021-02-09T14:19:09+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae0cdc4a5d198690d78482646894074e\"},\"description\":\"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#primaryimage\",\"url\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/james-lee-VPrVFrh5JLc-unsplash.jpg\",\"contentUrl\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/12\\\/james-lee-VPrVFrh5JLc-unsplash.jpg\",\"width\":1020,\"height\":680,\"caption\":\"an algorithm example: recipe for a sourdough starter\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/learn-algorithms\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Coding\",\"item\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/code\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Learn Algorithms: Courses, Training, and Other Resources\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/\",\"name\":\"Career Karma\",\"description\":\"Latest Coding Bootcamp News &amp; Career Hacks from Industry Insiders\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/#\\\/schema\\\/person\\\/ae0cdc4a5d198690d78482646894074e\",\"name\":\"Christina Kopecky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/image-3-150x150.jpg\",\"url\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/image-3-150x150.jpg\",\"contentUrl\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/image-3-150x150.jpg\",\"caption\":\"Christina Kopecky\"},\"description\":\"Christina is an experienced technical writer, covering topics as diverse as Java, SQL, Python, and web development. She earned her Master of Music in flute performance from the University of Kansas and a bachelor's degree in music with minors in French and mass communication from Southeast Missouri State. Prior to joining the Career Karma team in June 2020, Christina was a teaching assistant, team lead, and section lead at Lambda School, where she led student groups, performed code and project reviews, and debugged problems for students. Christina's technical content is featured frequently in publications like Codecademy, Repl.it, and Educative.\",\"sameAs\":[\"http:\\\/\\\/www.linkedin.com\\\/in\\\/cmvnk\"],\"url\":\"https:\\\/\\\/careerkarma.com\\\/blog\\\/author\\\/christina-kopecky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Learn Algorithms","description":"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/","og_locale":"en_US","og_type":"article","og_title":"Learn Algorithms: Courses, Training, and Other Resources","og_description":"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.","og_url":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/","og_site_name":"Career Karma","article_publisher":"http:\/\/facebook.com\/careerkarmaapp","article_published_time":"2020-12-04T03:11:52+00:00","article_modified_time":"2021-02-09T14:19:09+00:00","og_image":[{"width":1020,"height":680,"url":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg","type":"image\/jpeg"}],"author":"Christina Kopecky","twitter_card":"summary_large_image","twitter_creator":"@career_karma","twitter_site":"@career_karma","twitter_misc":{"Written by":"Christina Kopecky","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#article","isPartOf":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/"},"author":{"name":"Christina Kopecky","@id":"https:\/\/careerkarma.com\/blog\/#\/schema\/person\/ae0cdc4a5d198690d78482646894074e"},"headline":"Learn Algorithms: Courses, Training, and Other Resources","datePublished":"2020-12-04T03:11:52+00:00","dateModified":"2021-02-09T14:19:09+00:00","mainEntityOfPage":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/"},"wordCount":2692,"commentCount":0,"image":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#primaryimage"},"thumbnailUrl":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg","articleSection":["Tech Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/careerkarma.com\/blog\/learn-algorithms\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/","url":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/","name":"Learn Algorithms","isPartOf":{"@id":"https:\/\/careerkarma.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#primaryimage"},"image":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#primaryimage"},"thumbnailUrl":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg","datePublished":"2020-12-04T03:11:52+00:00","dateModified":"2021-02-09T14:19:09+00:00","author":{"@id":"https:\/\/careerkarma.com\/blog\/#\/schema\/person\/ae0cdc4a5d198690d78482646894074e"},"description":"In this article by Career Karma, discover what algorithms are, what they are used for, and how to use problem solving techniques to create efficient solutions to problems.","breadcrumb":{"@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/careerkarma.com\/blog\/learn-algorithms\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#primaryimage","url":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg","contentUrl":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/12\/james-lee-VPrVFrh5JLc-unsplash.jpg","width":1020,"height":680,"caption":"an algorithm example: recipe for a sourdough starter"},{"@type":"BreadcrumbList","@id":"https:\/\/careerkarma.com\/blog\/learn-algorithms\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/careerkarma.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Coding","item":"https:\/\/careerkarma.com\/blog\/code\/"},{"@type":"ListItem","position":3,"name":"Learn Algorithms: Courses, Training, and Other Resources"}]},{"@type":"WebSite","@id":"https:\/\/careerkarma.com\/blog\/#website","url":"https:\/\/careerkarma.com\/blog\/","name":"Career Karma","description":"Latest Coding Bootcamp News &amp; Career Hacks from Industry Insiders","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/careerkarma.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/careerkarma.com\/blog\/#\/schema\/person\/ae0cdc4a5d198690d78482646894074e","name":"Christina Kopecky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/06\/image-3-150x150.jpg","url":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/06\/image-3-150x150.jpg","contentUrl":"https:\/\/careerkarma.com\/blog\/wp-content\/uploads\/2020\/06\/image-3-150x150.jpg","caption":"Christina Kopecky"},"description":"Christina is an experienced technical writer, covering topics as diverse as Java, SQL, Python, and web development. She earned her Master of Music in flute performance from the University of Kansas and a bachelor's degree in music with minors in French and mass communication from Southeast Missouri State. Prior to joining the Career Karma team in June 2020, Christina was a teaching assistant, team lead, and section lead at Lambda School, where she led student groups, performed code and project reviews, and debugged problems for students. Christina's technical content is featured frequently in publications like Codecademy, Repl.it, and Educative.","sameAs":["http:\/\/www.linkedin.com\/in\/cmvnk"],"url":"https:\/\/careerkarma.com\/blog\/author\/christina-kopecky\/"}]}},"_links":{"self":[{"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/posts\/26616","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/users\/77"}],"replies":[{"embeddable":true,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/comments?post=26616"}],"version-history":[{"count":0,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/posts\/26616\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/media\/26617"}],"wp:attachment":[{"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/media?parent=26616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/categories?post=26616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/careerkarma.com\/blog\/wp-json\/wp\/v2\/tags?post=26616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}