<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shawn</title>
    <description>The latest articles on DEV Community by Shawn (@pooh_sx77).</description>
    <link>https://dev.to/pooh_sx77</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F696871%2F1c2db60e-e4ec-4056-8025-0ce81ad2f80c.png</url>
      <title>DEV Community: Shawn</title>
      <link>https://dev.to/pooh_sx77</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pooh_sx77"/>
    <language>en</language>
    <item>
      <title>Algorithms</title>
      <dc:creator>Shawn</dc:creator>
      <pubDate>Sun, 26 Sep 2021 21:06:11 +0000</pubDate>
      <link>https://dev.to/pooh_sx77/algorithms-5ki</link>
      <guid>https://dev.to/pooh_sx77/algorithms-5ki</guid>
      <description>&lt;p&gt;What is an algorithm?&lt;/p&gt;

&lt;p&gt;We all hear algorithm so often when doing a simple multiplication or a complicated calculus problem, but what does algorithm mean exactly?&lt;/p&gt;

&lt;p&gt;The word algorithm itself originally comes from Medieval Latin algorismus, and east from Greek arithmos which means “number”. It seems that it is also influenced by the name of the 9th Century Persian mathematician Al-Khwārizmī who wrote about calculations, and when his work was translated into Latin 300 years later, his name was somehow incorporated into the name of the process as Algoritmi. This became confused with the Greek word for number, leading to the evolution of the word as we know it.&lt;/p&gt;

&lt;p&gt;In mathematics, logic, computer science and related disciplines, an algorithm is a finite series of defined, computer-implementable and unambiguous instructions or rules that typically allow solving a problem, computing, processing data, automated reasoning and carrying out other tasks or activities.&lt;/p&gt;

&lt;p&gt;Interestingly, algorithms are not just used in mathematics and computer science but are also widely used in many aspects in our daily life. For instance, user manuals apply algorithms to guide people to use electrical appliance like a cooker, or a dish washer. At work, an electrical technician can follow the instructions which also are made by algorithms step by step to perform maintenance on a transformer. In other words, algorithm is nothing more than a method of solving a problem or accomplishing things by taking steps.&lt;/p&gt;

&lt;p&gt;Algorithms in computer programming&lt;/p&gt;

&lt;p&gt;Just as in real life, to get a computer to do a task, we need to write a computer program to tell the computer, step by step, exactly what we want it to accomplish. The computer then reads the program and executes the commands shared in it by following each step mechanically in order to complete the said task. This set of related commands or steps is a computer algorithm.&lt;/p&gt;

&lt;p&gt;There are many types of algorithms available in computer science, which means most of the time there are many solutions with different steps of solving a specific problem. Generally speaking, algorithms can be classified into six categories based on their kay features and functionalities.&lt;/p&gt;

&lt;p&gt;Greedy algorithm&lt;/p&gt;

&lt;p&gt;A greedy algorithm is an algorithmic strategy that makes the best optimal choice at each small stage with the goal of this eventually leading to a globally optimum solution. This means that the algorithm picks the best immediate solution at the moment without regard for consequences, therefore it is considered greedy.&lt;/p&gt;

&lt;p&gt;Dynamic Programming algorithm&lt;/p&gt;

&lt;p&gt;Dynamic programming algorithm is a technique that breaks complex problems into a collection of multiple simpler sub-problems, and stores the result for future purposes to avoid repetitive computations. The subproblems are optimized to optimize the overall solution which is known as optimal substructure property.&lt;/p&gt;

&lt;p&gt;Divide and Conquer algorithm&lt;/p&gt;

&lt;p&gt;Divide and Conquer algorithm breaks down a problem into two or more subproblems of the same or related type, recursively solves the subproblems, and finally combines the solutions to the subproblems to solve the original problem. Normally, it follows these three steps: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Divide the problem into a number of subproblems that are smaller instances of the same problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Conquer the subproblems by solving them recursively. If they are small enough, solve the subproblems as base cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Combine the solutions to the subproblems into the solution for the original problem.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Recursive algorithm&lt;/p&gt;

&lt;p&gt;Recursive algorithm is a method of simplification that divides the problem into sub-problems of the same nature. The result of one recursion is the input for the next recursion. The repletion is in the self-similar fashion. The algorithm calls itself with smaller input values and obtains the results by simply performing the operations on these smaller values. Generation of factorial, Fibonacci number series are the examples of recursive algorithms.&lt;/p&gt;

&lt;p&gt;Brute Force algorithm&lt;/p&gt;

&lt;p&gt;Brute Force algorithm is a trial and error methodology, which is used by attackers to break into any website’s data or systems. They try to steal information by generating every possible combination of the password-protected information. Brute Force relies on the computational power of the machine to try every possible combination to achieve the target.&lt;/p&gt;

&lt;p&gt;It is also known as Exhaustive Search or Generate and Test that yields all possible solution of the problem. It is a simple problem solving technique that is easy to implement and will always come up with a solution if exists. The computational cost of Brute Force algorithm is directly proportional to the number of candidate solutions, for example it grows as quickly as the problem size increases. Therefore, it is ideal to use when the problem size is limited and small and does not have complex and large problem sets.&lt;/p&gt;

&lt;p&gt;Backtracking algorithm&lt;/p&gt;

&lt;p&gt;Backtracking is an algorithmic technique where the goal is to get all solutions to a problem using the brute force approach. It consists of building a set of all the solutions incrementally. Since a problem would have constraints, the solutions that fail to satisfy them will be removed.&lt;/p&gt;

&lt;p&gt;It uses recursive calling to find a solution set by building a solution step by step, increasing levels with time. In order to find these solutions, a search tree named state-space tree is used. In a state-space tree, each branch is a variable, and each level represents a solution.&lt;/p&gt;

&lt;p&gt;A backtracking algorithm uses the depth-first search method. When it starts exploring the solutions, a bounding function is applied so that the algorithm can check if the so-far built solution satisfies the constraints. If it does, it continues searching. If it doesn’t, the branch would be eliminated, and the algorithm goes back to the level before.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>About Myself</title>
      <dc:creator>Shawn</dc:creator>
      <pubDate>Tue, 31 Aug 2021 20:44:28 +0000</pubDate>
      <link>https://dev.to/pooh_sx77/about-myself-5cd9</link>
      <guid>https://dev.to/pooh_sx77/about-myself-5cd9</guid>
      <description>&lt;p&gt;My name is Shawn, and I have been abroad for 10 years -- 5 years in Japan and 5 years in Canada. In 2013, I went to Toyota Technical College and majored in Automobile Technology. With high grades achieved in school, I acquired Japan Student Services Organization Scholarship on my second semester. After graduation, I became an automobile mechanic and worked at Toyota dealership for 1 year. Then I made a decision to immigrate to Canada, as I had been thinking of immigration during my school years. After 2-year study and working for 3 years in Winnipeg, Manitoba which is another province in Canada, I finally received my Permanent Resident Card early this year and moved to Vancouver -- one of the best cities to live in the world.&lt;/p&gt;

&lt;p&gt;In my free time, I like reading, listening to music and watching TV shows -- mostly sitcoms like Friends, The Big Bang Theory and so on. Also I enjoy outside activities, like jogging and hiking. I jog everyday and think it is the one of the best ways to relieve stress and challenge myself by setting up harder goals every time.&lt;/p&gt;

&lt;p&gt;I am always looking for volunteer opportunities to be involved in the community. In 2017, I assisted with the greeting and direction of guests at special events at University of Manitoba. Back in 2014, I helped with set-up and serving as well as guest entertainment for special events at Toyota Technical College.&lt;/p&gt;

&lt;p&gt;After I worked in Canada for 3 years as a car mechanic, I realized that this kind of jobs is not suitable for me because of the different situations between Japan and Canada. So I decided to change my career after I acquired my permanent residency. Then I did a lot of research and it turns out that programming is one of good choices for people who want to change their career like me. Also I watched a few videos about web development, and found out that I am very interested in it and it is suitable for me as well, since I like solving problems and am always willing to learn new things.&lt;/p&gt;

&lt;p&gt;Currently, I just took an online course of HTML and CSS, did a lot of code-along projects and finished halfway through a web development bootcamp on Udemy. Then I realized that I need more practice on Javascript, so I decided to pause the boot camp and jump onto another course which is dedicated to Javascript. Now I am working on that course and hope I could grasp a better understanding of Javascript. Although it is getting more and more difficult while moving forward and sometimes I get stuck, but overcoming that is also kind of fun to me and I believe that I will make it through eventually.&lt;/p&gt;

&lt;p&gt;My end goal is to find a job in Vancouver, therefore becoming an independent front-end web developer would be my first objective. Since React developers are in very high demand now, I think I will be spending more time on that part.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
