Nikolaj Banke Jensen
🇩🇰/🇬🇧 • Machine Learning, Programming Languages, Category Theory
I'm a student in computer science, primarily interested in machine learning, programming languages, and the intersection between the two. Machine learning is compositional in nature, so I'm exploring how type theory and category theory can help reason about these systems. Ultimately, I want to create better tools for working with, and proving properties of, compositional structures.
Want to get in contact? Email me at hello@nikolajjensen.com.
What I'm working on
Kepler
This is a C++ implementation of APL I wrote
for my BSc dissertation. It is one
of the most feature-rich open-source APL implementations available, supporting most primitive
functions and operators. The following Kepler program sets up and runs 5 rounds of Conway's Game of
Life!
⍝ Setting up a 10x10 board.
glider ← 3 3⍴1 1 1 1 0 0 0 1 0
board ← ¯10 ¯10↑glider
⍝ The function of life.
Life ← {1 ⍵∨.∧3 4=⊂+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
⍝ Helpers for updating the board.
Update ← {board ← Life board}
Round ← {Update ◊ ⎕←'\n \n' ◊ ⎕←board}
⍝ Run 5 rounds.
(Round⍣5)0
If you like functional programming, (semi-)esoteric languages, and funky symbols, you'll love
Kepler.
SunCalc
A Swift Package for calculation of Sun and Moon positions and phases.
Originally
written in Java, I have
rewritten this project as a native Swift Package for easy use on Apple platforms. This work is open
source and is published under the Apache License 2.0.
Kepler
This is a C++ implementation of APL I wrote for my BSc dissertation. It is one of the most feature-rich open-source APL implementations available, supporting most primitive functions and operators. The following Kepler program sets up and runs 5 rounds of Conway's Game of Life!
⍝ Setting up a 10x10 board.
glider ← 3 3⍴1 1 1 1 0 0 0 1 0
board ← ¯10 ¯10↑glider
⍝ The function of life.
Life ← {1 ⍵∨.∧3 4=⊂+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
⍝ Helpers for updating the board.
Update ← {board ← Life board}
Round ← {Update ◊ ⎕←'\n \n' ◊ ⎕←board}
⍝ Run 5 rounds.
(Round⍣5)0
If you like functional programming, (semi-)esoteric languages, and funky symbols, you'll love Kepler.
SunCalc
A Swift Package for calculation of Sun and Moon positions and phases. Originally written in Java, I have rewritten this project as a native Swift Package for easy use on Apple platforms. This work is open source and is published under the Apache License 2.0.
Where I've been
MPhil Advanced Computer Science
University of Cambridge • 2023 - 2024
Thesis titled "Enforcing idempotency in neural
networks".
Supervised by Jamie
Vicary.
BSc Computer Science (Artificial Intelligence)
King's College London • 2020 - 2023
Dissertation titled "Building Kepler: A
Feature-First APL Implementation in C++".
Supervised by Laurence Tratt.
Positions I have held:
Research Assistant
University of Cambridge • Jul - Sep 2024
Developing gradient-free optimisation methods for
finding neural networks which act as idempotent mappings. This work is a
continuation of my MPhil thesis and is under supervision of Jamie
Vicary.
Part-Time Undergraduate
Arm • Jun 2022 - Mar 2024
In the Compute Library team,
working on fast ML for
mobile and embedded Arm platforms. Focused on JIT compilation of Arm64 assembly for matrix
multiplication.
Research Assistant
King's College London • Jun 2021 - Mar 2023
Worked on educational programming tools in the research
group led by Michael
Kölling. Helped design and conduct an eye-tracking study to
assess the impact of background styling in code editors on novice programmers' code
understanding. The latter resulted in a paper.
nikolajjensen.com © Nikolaj Banke Jensen