Like a lot of software engineers, I studied all the main computer science topics at university then went out into the real world and promptly forgot them. Then, at some point, I applied for a job and was told “We’ll do a technical interview. It’s just the basics, all the stuff you should be familiar with, but you should probably do a bit of revision“, followed by a long list that covered almost everything I remember studying as an undergrad and more. But now I have kids who don’t sleep and a day job and a million other projects and the web is full of pages and pages about this stuff that I don’t have time to wade through!
So, this is my attempt to distill various computer science topics into the essential stuff to remember, for those who once knew it but have since forgotten. It’s not intended as a starting point for those unfamiliar with the subject – there are loads of better places on the web for that.
These posts were written as I studied the topics again, so I welcome comments, additions and corrections!
- Computational complexity and polynomial time
- NP-complete and NP-hard
- Linked lists, stacks and queues
- Trees and tries