A data structure is a particular way of organizing data in a computer so that it can be used efficiently. Previously I talked about two very similar data structures – tree and graph. Today I am going to talk about Linked Lists, Sets and Hash Tables.
There are many different types of data structures simply because each one provides certain benefits over the others. One may be better at retrieving data, another might be better at inserting data and yet another might be better in its ability to expand as the size of the data increases.
Monday morning of Week 5 we had an hour long review of our experience from Week 4. Since week 4 is considered the hardest week, there is concern from the instructors that we would be disappointed and frustrated. We all talked about our experiences and realized that we learned quite a bit during the week despite our frustrations.
Week 5 starts out with an introduction to authentication. Now that we have completed our first full-stack application, we need to be able to implement authentication to allow users to create an account and to login to the server.
There are many things to consider when implementing authentication on your server.
- How do I store user and password information securely
- What additional steps will the user need to take when interacting with the application
- What strategies do I need to employ to secure existing site functionality
- How often should the user need to enter their username and password
An algorithm is a self-contained step-by-step set of instructions to solve a problem. It takes time for these steps to run to completion. The time it takes for your algorithm to solve a problem is known as time complexity.
Here is the official definition of time complexity. The time complexity of an algorithm quantifies the amount of time taken by an algorithm to run as a function of the length of the string representing the input.
That sounds like a mouth full and you are probably trying to understand exactly what that means. In simple terms, time complexity is defined by the time and space required by a particular algorithm.
It is not unusual to find many different methods that you can use to solve a problem. The length of time it takes and the number of operations taken are used to determine how effective your algorithm is in solving the problem. Complexity helps programmers to understand, and therefore improve, the efficiency of our code.
Week 4 is considered the hardest week at Hack Reactor. In fact it is so challenging that at the end of Week 3 we had a special meeting to discuss what to expect for this week.
When the instructors tell you point blank that it is not uncommon for people to feel completely lost and totally confused then you wonder what is in store for you.
Week 4 is our first foray into building complete full-stack applications. During this week we will learn about NodeJS and handling asynchronous event loops. Mid week we transitioned into learning about data storage structures and server side concepts. The end of the week we jumped head first into databases.