However, despite the platform on which it is used, there is a consistent need to handle and manipulate data to various outcomes. On the client, this usually isn’t given much attention as in almost every case, Arrays and Objects quickly come to the rescue. This practice thus quickly advanced beyond the client despite changing paradigms. Correspondingly, how efficiently things are done is mostly ignored. We write various algorithms, mostly in the form of functions designed to cleverly manipulate data and provide the required outputs as a means to carry out various kinds of computation. And again, we tend not to worry about how efficiently this too is done.
The result? Applications shipped into production with quirky Data Structures that cannot scale accompanied by Algorithms that consume an insane amount of resources(System and Time). This eventually, tends to affect the integrity of applications as well as destroy the overall user experience.
As always, the concerns in the life of a software engineer continue to shift progressively towards certain core concepts and their corresponding benefits and away from simply making software that works. One of such core concepts is Performance.
Hence, as to structuring, processing and presenting data one begins to wonder:
- Is this the best way to structure such data?
- Will this scale beyond localhost?
- What happens when there’s an insane flow of data?
- How do i optimize these computations for better performance?
If you’re still wondering why you should take this course, perhaps the following points would help you:
- That Job Interview. It’s no news that job interviews especially in large organizations like Google, Facebook, Twitter etc usually feature algorithmic challenges designed to test your fundamental understanding of software engineering principles. Arguably, even Frontend Developers are expected to have some level of understanding of these things too as they come in handy for building better software irrespective of the targeted platform.
- Software Engineering trends show that performance is gold. There has been an increasing interest in not only making functional applications, but making sure that these applications are able to scale and provide the desired functionality and experience while utilizing minimal resources.
- The Next Billion Users. Among the concerns in building applications for the next billion users is the need for speed and ability to run with minimal resources.
- Humans are becoming increasingly impatient. From some perspective, this may be a bad thing. But from mine, this is perhaps a primary reason behind the remarkable performance wins in recent years. People no longer want to just get things done, but want to get them done very quickly. Statistics show that users want to begin interacting with web pages and applications within 1-3 seconds. Anything beyond this results in a loss of a substantial number of users.
- More talk and less Code. Very often, you may have come across articles or blog posts that highlight the need to optimize things but end up not showing you how to. You are not alone really. I’m tired of them too.
First we gain sufficient understanding of Algorithms and Data Structures as well as consider associated terms and the practicality of such knowledge. Next we dive into implementing various algorithms and Data structures common to more conventional languages like C++ and Java. In each case, we examine various possible implementations, determine the most optimal and identify real-world usages of each solution considered.
This course is especially for you if you:
- Are preparing for a coding interview and want to brush up on your skills.
- Are interested in building scalable software.
- Just love learning and a good challenge.
Make sure to follow along and drop your notes, comments questions and challenges concerning this course in the comment section below or on slack.