I have always loved mathematics. This was one of the key reasons why I became a teacher; to help future generations understand the complexity and simplicity of mathematics. However, I realized my true strength was in designing the materials, not delivering them. That led me to an EdTech publisher which designed a digital learning platform for mathematics; namely Skoledu.
At Skoledu I discovered how programming could solve a lot of everyday tasks. I played with Python and took some Harvard courses in my spare time. I increasingly used the terminal to fix my problems, and I even developed some useful tools for me and my colleagues. After four years at Skoledu, I wanted to learn the foundation and master programming.
Today, I balance CS program with raising three children and building hands-on infrastructure (like this very website, which I self-host on a Raspberry Pi). To me, programming languages aren't just technical requirements; they are tools to solve human problems.
Computer Science courses I've completed at the Aarhus University
Learning:
• Explain characteristic features of programming language paradigms (imperative, functional, and OOP)
• Formalize fundamental programming language features (scoping rules, type systems, state management, higher-order functions, closures, etc.)Implement simple language processors (interpreters and compilers)
• Use mathematical and structural induction to reason on recursion and program correctness
• Implement a simple type checker in a mini language (miniscala)
Learning:
• Implement and analyze algorithms using standard algorithm paradigms
• Identify, use and compare data structures and graph algorithms
• Evaluate performance of algorithms
• Analyze and compare the time and space usage of algorithms and data structures
• Identify valid invariants and prove the correctness of simple algorithms
Learning:
• Perform Gaussian elimination
• Calculat gradient descent with the Hessian matrix
• Work with multidimensional matrices and multivariable calculus
• Apply general and convex optimization on data from examples
• Apply techniques to establish global or local minima for convex functions
Learning:
• Programming concepts and techniques in Java
• Program architecture concepts (inheritance, abstract classes, interfaces)
• Apply simple specification models
• Perform testing and debugging of programs