What are the minimum set of required computer science skills for a web developer who does not have a CS degree to be a good programmer?
The absolute minimum probably would be learning about the basic data structures:
- Hash map: if you only learn one, this is the one you should learn.
- Lists: linked single vs double, head node vs head-less and also array lists. Learn how they relate to stacks and queues.
- Binary search tree/Quad tree/Oct tree: learn why they are important, and how they are maintained balanced.
- Trie: if you have extra time, these are very important for string searching.
- Graphs/Networks: these are more specialized, but I wouldn't consider a programmer as advanced unless they were very comfortable with these.
And the basic algorithms:
- Sort: quick, merge, and heap for O(n*log n), radix and count for O(n).
- Select: find the k-th largest element in an array in O(n).
- Binary search: in conjunction with sort and search trees.
- Breath and depth first search: your typical recursion-like algorithms, one with a stack and one with a queue structure.
- Dynamic programming: from search algorithms, these are the next step in complexity. But they are so powerful that I would almost call them a must.
- Path search/network flow: these are advanced topics, paired with graphs and networks from above.
If you wanna read the complete question: