Data structures are organized ways of storing data in a computer so it can be used efficiently. There are two categories of data structures: linear and non-linear. Linear structures arrange elements sequentially, while non-linear structures arrange them hierarchically. An algorithm is a set of unambiguous steps to solve a problem or achieve a goal. It must be feasible, terminate, and produce the correct output given specified inputs. Pseudocode uses a mix of natural language and programming concepts to describe algorithms at a high level without specific syntax.