During my graduate studies at the University of Zagreb, Faculty of Electrical Engineering and Computing, I've had the pleasure of documenting, testing and implementing a plethora of algorithms. The solutions are grouped by course and each one has its own folder. Additional information about the course or exercise can be found in its respective folders.
APR (eng. Computer Aided Analysis and Design)
- Solving systems of linear equations - matrix manipulation, forward and back substitution, LU and LUP decomposition
- Single variable nonlinear function optimization - golden section search, Nealder-Mead simplex method, Hooke-Jeeves method
- Multiple variable nonlinear function optimization - gradient descent, Newton-Raphson method
- Constrained optimization - Box method, constrained problem transformation
- Genetic algorithms - representation, crossover, mutation, optimal parameter search
- Numerical integration - Runge-Kutta methods
FMOS (eng. Formal Methods in System Design)
- Propositional logic, predicate logic, Computation Tree Logic (CTL), Kripke structure
- NuSVM language and programming
- Linear Temporal Logic (LTL), fixed point theory
- JavaPathFinder tool and programming
- Hardware Description Language (VHDL), Verilog
- Promela language and Spin tool
- Binary Decision Tree (BDD), Reduced Order BDD (ROBDD), ITE algorithm
- DPLL, GRASP and Chaff methods
NOS (eng. Advanced Operating Systems)
- Communication between processes - message queues, pipelines
- Mutual exclusion in distributed systems - Lamport's distributed protocol, Ricart-Agrawala protocol
- Cryptography - security demands, DES, AES, block ciphers, RSA, Miller-Rabin primality test, digital envelope, signature and seal, hash functions
- Security protocols - Diffie-Hellman protocol, Needham–Schroeder protocol, Kerberos protocols, PKI
- RAID
NOS keys: DES is Data Encryption Standard, AES is Advanced Encryption Standard, RSA is Rivest–Shamir–Adleman, PKI is Public Key Infrastructure, RAID is Redundant Array of Inexpensive Disks.
PP (eng. Parallel Programming)
- Introduction to High Performance Computing (HPC) - parallel programming models, properties and sequential to parallel conversion
- Message Passing Interface (MPI) - process communication, MPI functions, blocking and non-blocking
- Parallel Random Access Machine (PRAM) - synchronous and asynchronous, *_reduce algorithm
- Designing parallel programs - phases, hypercube algorithm, N-tree algorithm
- Quantitative analysis of parallel algorithms - time to execute, efficiency and isoefficiency, speedup, scalability
SU (eng. Machine Learning)
- Linear regression, cross validation, feature, model and hyperparameter analysis
- Logistic regression, one-vs-one, one-vs-rest classification
- Support vector machines, kernel functions, K nearest neighbours
- Ensambles, maximum likelihood and aposteriori estimators
- Probabilistic graphical models, clustering