- Time and space complexity (Big O, Little O, big Omega)
- Algorithms and data structures (linked lists, heaps, trees, graphs, search algorithms, sorting algorithms)
- Artificial intelligence (neural networks, evolutionary computation, decision trees)
- Electrical engineering logic gates and circuit analysis (gives a good basic understanding)
- Discrete maths (De Morgan's laws)
- Database design
The database design course I did was heavily centered around relational databases but some of the core concepts of this course ended up being very valuable for any kind of DB and also for areas outside of the DB. It taught me a lot about useful software engineering concepts such as identifying functional dependencies in the data, achieving good separation of concerns, establishing a clear data flow, one-source-of-truth principle, indexing of data, etc...