Encora Academy 🖥

Lu
3 min readJan 17, 2021

Your Personal Branch 💪🏼

Week 16 takeaways

This week has been a little different, the phase has been a little different. I have dedicated myself to relearning more things about computer science specifically about algorithms, but more on that a little later.

It has been a hard week, talking about the organization (of everything I want to do), decisions, and feelings.

This week half of the academy’s (more less) left the program. This made me think, several things. One of them is that we are the second batch in the covid time, this means, we are full-remote academies, this is quite impressive. First because of the amount of organization and planning it took to instruct us. The second and the most impressive, for me at least, is the relationship I grow with my colleagues, people I’ve never seen in person, and that have taught me a lot in different ways.

I wish them great success in all their endeavors

After these brief words, I will share with you what I have been learning.

HackerRank & Algorithms

the company and website that focuses on competitive programming has been my new social media 😅, I’ve spent some important time in it.

There are several problems, easy, medium, hard, that I have been solving, some of them took me to get my knowledge in Algorithms and complexity even further.

I’ve been reading on dynamic programming but implemented it has been different but is when I most learn. I discovered three algorithms:

  • Longest Common Subsequence: it is used to find the longest subsequence (obviously 😅), it is used in strings but the algorithm can be adapted to other problems.
  • Kadane algorithm: this one is used to fin the maximum subarray sum in a 1-D array, with contiguous elements. I discovered because I was trying to sum non-contiguous elements, this was a good start to find a good solution.
  • House Robber Algorithm: this is kind of like the Kadane algorithm, uses dynamic programming but considers non-contiguous elements.

And did a review of the k-nearest neighbors and Dijkstra algorithm.

  • KNN : With this algorithm of classification that I have previously studied I had a great time discovering its current applications 🤯, how it can be used to make suggestions, face recognition, speech recognition and anything that has to be with characteristics and features.
  • I review both Dijkstra and breadth-first search (BFS), with the difference that BFS is used with indirect graphs with no weights to find the shortest path between 2 things. On the other hand, Dijkstra works with direct acyclic graphs (DAGs) with positive weights, for negative weights the Bellman-Ford algorithm is up for the work, but I have not explored it yet.

I have been keeping my progress in both HackerRank and Github.

Encryption vs Hashing

This topic was a little messed in my mind so I will share what I have been learning:

  • Encryption: is a two-way function this means, if something is encrypted with a key, it can be reversed with the same key to obtain the original value.
  • Hashing: is a one-way road, it is meaningly used to verify that data has not been modified, it is largely used to verify the integrity of files. A famous group of hashing algorithms is SHA. Hashing it can be used to check the password, to check if the hash of the password is the same as the hash stored in a database to log in

The standard of password hashing is bcrypt.

Thanks for reading

--

--

Lu

Hi everyone I am Lucero Garcia 🇲🇽. DEV 🖥🤓. I also translate articles to Articulos en español in medium.com/art%C3%ADculos-en-espa%C3%B1ol