This file covers classes taken during the last 2 years of my BSc.
Course Name | Description | Coursework |
---|---|---|
Advanced Operating Systems | real-time task scheduling (periodic, aperiodic, sporadic), garbage collection, region-based memory, multi-core systems, message passing, gpu programming, virtualisation | Class exercises in Rust and C |
Advanced Programming | threading, concurrency and memory management. | Class exercises in Java and C |
Algorithmics II | geometric algorithms, AVL trees, graph algorithms (matching, network flow, residual), stable-matching algorithms, strings (suffix trees, longest common subsequence, regex), "hard" problems (NP-Complete, NP-hard, polynomial approximations) | Class exercises in Python |
Algorithmics I | stacks, queues, binary trees, heaps, sorting algorithms, search algorithms, strings (compression and pattern-matching), graphs (representation, search and traversal), complexity analysis (P, NP, NP-Complete, NP-hard), finite state automata | Class exercises in Java |
Artificial Intelligence | PEAS representation, audio and image processing, thresholding, probability and statistics, decision theory, supervised and unsupervised learning, regression | Class project classifying speech in Python |
Computer Vision Methods | digital image formation, domain frequency analysis, filtering, edge detection, image segmentation, multi-resolution, Hough & Radon transform, video compression, optical flow estimation, object tracking, image classification | Class exercies in Python |
Constraint Programming | constraint satisfcation problems, search backtracking, arc consistency, phase transition, parallel search, discrepancy search, heuristics | Class exercises in Java |
Database Systems | relational databases, advanced SQL, query optimisation, embedded SQL, transactions, security, distributed DBs | Class exercises in Java, PostgresSQL |
Distributed Algorithms and Systems | distributed system models, inter-process communication, remote procedure calls, distributed objects, time and global states, coordination agreements, load balancing, distributed file systems | Class project to implement auction server in Java |
Interactive Systems | human perception, computer interaction paradigms, interface design and rules, exploratory data analysis (statistics, data design, visualisation) | Class project of web frontend in Javascript, HTML, CSS |
Machine Learning | regression (linear, polynomial), cross-validation, maximum likelihood, classification (Bayes, logistic regression, KNN, SVM), unsupervised (K-means), performance analysis | Class project to predict and correct touchscreen typing in Python |
Networked Systems | OSI Model, communications theory, low-level protocols and physical layers, data link layer, media access control (MAC), bridging, addressing, intra-domain and inter-domain routing, TCP, UDP, NAT, congestion control, security | Class project of multi-threaded web server in C |
Operating Systems | OS structure (boot, kernels, system calls), processes (control blocks, scheduling, inter-process communication), threading (multicore, operations, race conditions, synchronisation methods), memory management (dynamic linking, address binding, swapping, segmentation) | Class exercises in C |
Professional Software Development | software development cycles (waterfall, agile), project planning and metrics, software failure, requirements gathering, prototyping, acceptance testing, software patterns, refactoring, legacy systems | Class project practicing software concepts in a team |
Programming Languages | typing, compilers, interpreters, abstract syntax trees, scoping, syntactic analysis, code generation, address allocation, generics, run-time code generation, native code generation | Class project to write own programming language |
Safety Critical Systems | designing safe systems, risk analysis, safety evaluation techniques, redundancy, human error | Class case studies |