Adrian Maciejewski

Final-year BSc student at the Technical University of Denmark

I’m in the final year of a BSc in General Engineering (Cyber Systems) at DTU, with a focus on mathematics and computation, and I’m writing my bachelor thesis on 3D neutron computed tomography at DTU Compute. Next I want to do research in applied mathematical analysis, combining mathematical models with numerical methods and machine learning.

Before and alongside the BSc I have worked part-time as a software developer for more than four years, first at Nordic Insurance Software and now at Dalux, and I write embedded software for DTU’s Formula Student team.

Education

2023–2027

BSc in General Engineering (Cyber Systems), DTU

GPA 10.70 / 12

Selected courses in mathematics and computation:

Mathematical Modelling12
Introduction to Operations Research12
Mathematics 1a and 1b12
Advanced Engineering Mathematics 210
Introduction to Numerical Algorithms10
Statistics10
Introduction to Partial Differential Equationsthis semester

Grades on the Danish 7-point scale, where 12 is the highest (an ECTS A) and 10 is an ECTS B.

2020–2023

Academy Profession in Computer Science, UCN

University College of Northern Denmark

Software development, systems design, multithreaded systems, data analysis and machine learning. Final project on a microservice management system, graded 12.

Experience

2026–present

Laboratory Assistant, DTU Wind

From November 2026 · supervisor Assoc. Prof. Nenad Mijatović

PLC programming for laboratory equipment.

2025–present

Embedded Software Engineer, Vermilion

DTU Formula Student electric race car team · volunteer

I develop the vehicle control unit on an STM32 in C: CAN message dataflow and FSMD-based control logic. I also extend the car’s CAN software for telemetry and data acquisition, and built a real-time data visualization pipeline that works both locally and online.

2025–present

Student Software Developer, Dalux

C#, .NET, TypeScript, SQL

Production software in a large codebase, backend and frontend, in an agile team: design, implementation, testing and code review.

2022–2025

Student Software Developer, Nordic Insurance Software

C#, .NET, MSSQL, TypeScript, React, GraphQL

Three years of part-time full-stack development: data-driven systems and business logic.

Thesis

2026–2027

3D Neutron Computed Tomography

Bachelor thesis, DTU Compute · supervisor Mirza Karamehmedović

Like X-ray CT, neutron tomography reconstructs the inside of an object from projections taken at many angles, here measured with neutrons. Neutrons pass easily through many metals but are strongly attenuated by hydrogen, so they can show water or oil inside a metal part, where X-rays mostly see the metal. The thesis covers the mathematical modelling of the measurements and the reconstruction, formulated as an inverse problem.

Object

Measurements

Reconstruction

Radiation

Relative error

Figure 1. A simulated aluminium part with two steel pins and water in a crack, two channels and the bore, measured from evenly spaced angles over 180° and reconstructed by filtered back-projection, live in your browser. Neutrons show the water and see through the aluminium; X-rays show mostly the steel. The measurements hold one column per angle: with fewer angles they no longer pin down the object, and streaks appear.
Model and data
MaterialNeutronsX-rays
Aluminium0.100.46
Steel (iron)1.192.93
Water≈ 3.50.17

Linear attenuation coefficients in cm−1, for thermal neutrons (PSI table) and 100 keV X-rays (NIST tables times density). The object is a sum of ellipses on a 128 × 128 grid, so each measurement is an exact line integral; the reconstruction uses the Ram-Lak filter and linear interpolation. The error is ‖frec − f‖2 / ‖f‖2 against the object averaged over each pixel. Images are shown on a square-root scale so that weak attenuation stays visible.

The report and code will be posted here when the thesis is finished in January 2027.

Projects

2025

Image erosion from C to a custom CPU and an accelerator

Computer Systems, DTU · C, Chisel, Python

The same image-processing task at three levels of abstraction. A C program finds cells in 950 × 950 microscope images through background subtraction, thresholding and repeated erosion. A 32-bit single-cycle CPU, written in Chisel with its own ten-instruction set and a Python assembler, runs an erosion program on a 20 × 20 image. Finally, a dedicated accelerator in Chisel, controlled by a finite-state machine, performs the erosion directly. Each part has automated tests.

Test image

After one erosion

Draw on the test image to change it.

Figure 2. One erosion step on the project’s 20 × 20 test image, the task that both the CPU program and the accelerator perform. A cell pixel survives only if its four neighbours, the plus shape, are cell pixels too, so every cell loses its outer layer: 34 of the 59 pixels (light) are removed.

2024

Optical density meter for yeast cultures

Design-Build 1, DTU · MicroPython, Flask, Next.js

A device that follows how a yeast culture grows by measuring how much light passes through it. An ESP32 running MicroPython reads a light sensor, converts each reading to optical density with OD = −log10(I/I0) and a linear calibration, and sends it over WiFi to a Flask server. A Next.js web page shows the growth curve while the experiment runs.

Figure 3. Optical density (OD600) of a yeast culture recorded by the device over 71 hours: 8,564 readings, one every 30 seconds.
Data table
Time (h)OD600
00.24
60.28
120.37
180.66
241.15
301.23
361.30
421.34
481.39
541.43
601.46
661.50
71.41.53

Readings closest to every sixth hour. All 8,564 are in the raw data file.

Smaller projects

2025

PID-controlled solar heat collector. An Arduino keeps a solar heat collector at a target temperature by adjusting how far its shades are open with a stepper motor; the logged temperatures are plotted in Python. C++. Code

2024

ISA simulator. A Python simulator for a small instruction set, tested with our own sorting program. Group project, Cyber Systems course. Code

2024

FSMD simulator. Simulates finite-state machines with datapath described in XML; our own test case solves the climbing-stairs problem. Group project, Cyber Systems course. Code

2022

Claim reserve prediction. Machine-learning models that predict insurance claim reserves for Nordic Insurance Software: ridge regression, decision trees, random forests, gradient boosting and neural networks. Python. Code

Skills

Mathematics
Mathematical modelling, numerical methods, differential equations, statistics, optimisation and operations research, discrete mathematics, inverse problems
Programming
C, C++, Python, C#, .NET, Java, TypeScript, SQL, React, and Chisel for hardware description
Concepts
Computer architecture, CPU microarchitecture, hardware acceleration, embedded systems, multithreading, data structures and algorithms
Technologies
Linux, Git, CAN bus, STM32, ESP32, Raspberry Pi, MQTT, Kafka, SQL Server; agile development with Scrum
Languages
Polish (native), English (proficient), Danish (learning)