An introduction to functional and logic programming languages. Relative merits such as extensibility vs. verifiability vs. efficiency. Computational models and semantics.
Classification, regression, optimisation, neural networks, deep learning, unsupervised learning, semi-supervised learning, clustering, dimensionality reduction and generative models. The implementation of machine learning techniques, experimentation and practical application are a central theme of the course.
Core concepts of the Theory of Computation, including automata, formal languages, Turing machines, computational complexity, and Quantum Computing
Introduction to Software Engineering through programming with particular focus on the fundamentals of computing and programming, using Python