Algorithms and data structures go hand in hand. Alogorithms, which can be discribed either by natural language as well as computer language, are independent with language.
The core of algorithm design is partially laid on the fact that people want to use less computing resources to do more computing.
We should be aware of the performance of an algorithm as well as how it works, which can help us when we need to decide which algorithm we should apply.
The purpose of an API is to separate the client from the implementation: the client should know nothing about the implementation other than information given in the API, and the implementation should not take properties of any particular client into account. APIs enable us to separately develop code for various purposes, then reuse it widely.