Discuss the differences between static and dynamic typing, strong and weak typing, and provide examples of languages that embody each type system.
Compare and contrast garbage collection, reference counting, and manual memory management.
Describe complex data structures like B-Trees, Graphs, Tries, and Skip Lists.
Discuss immutability, first-class functions, and pure functions with examples in Haskell or Scala.
Discuss the basic components of a compiler and an interpreter.