# Posts

## Abstraction, the fundamental idea of algebra

Using letters to denote numbers may look like just a simple trick of notation, but it is the fundamental idea of algebra. Abstraction allows us to do general computations, not just arithmetic calculations with actual quantities. Here is a handout for the first class of an Algebra/Pre-Calculus class. This also shows that if someone is able to solve an equation (no matter how simple), then he/she has already obtained the key skill needed for computer programming.

## What is programming? - a list of thoughts

In preparation for an open class on computer programming, I collected a few ideas that I would like to mention. Here is the current draft.

## Towards a practical philosophy of computer programming

Publishing research proposals may be an unusual practice. However, little consideration shows that there would be advantages, if it was the norm. Proposals are judged, but seldom discussed. Therefore, a bit more openness coud benefit scientific research in general. Here is a draft proposal describing how philosophical investigations could help learning to code and software engineering in general. Why philosophy? Well, whether we like it or not, ideas on that level of abstraction do influence coding and learning new technologies.

## Mathematics of the Digital World

I start every course with a sort of philosophical introduction. It is usually about asking What is the most important idea of …?’, and by trying to answer the question, I can give an overview of the whole course. Today I started a computing-focused discrete math course, so the question was:

What is the most fundamental idea of digital computation?

This handout is an attempted answer.

## How to code it? - Functional programming & problem solving heuristics

Opinions differ about the relationship of mathematics and programming. Depending on temperament, one might say that they are essentially the same as both strive for understanding in a precise formal manner. Or, it can be argued that practical engineering goals are rather different from aiming for unquestionable proofs. Functional programmers, in particular, are probably more comfortable with the connection. They tend to know that some mathematical constructs like lambda calculus, or whole theories like category theory form the basis of their favourite languages.

## Informal introduction to the holonomy decomposition of transformation semigroups

The holonomy algorithm is the main method used in SgpDec for computational tools of the Krohn-Rhodes theory. The details of the algorithm might not be the easiest to grasp, but the underlying ideas are quite simple. Here is a short description of the general ideas used in the holonomy decomposition.

# Poetry of Programming - Puzzle-based Introduction to Functional Programming

The whole course content, tutorial notes, assignments can be found on GitHub.

## An algebraic view of computation

I am not particularly interested in doing philosophy, as my research is about using computers to extend mathematical knowledge. But it turns out that this involves questions that are not mathematical or technical, but of fundamental nature. I write code and run computer experiments all the time, so the question What is computation?’ is on my mind continuously. Here is an attempt, a draft version of a somewhat philosophical paper to address the question for the $(n+1)$th time.

## Euler's Formula in College Algebra

Once complex numbers are introduced in a College Algebra/PreCalculus course, why not discuss Euler’s formula? Especially the equation $e^{\pi i}+1=0$, that looks good on a T-shirt. A full proof is out of question, but the power series definitions of the exponential and trigonometric functions provide a narrow, but walkable path up to the summit. With a computer algebra system it is easy to demonstrate how the approximations work, just by entering a few terms of the infinite sums.

## Talk on finite computational structures

Here are the slides for my talk “Finite Computational Structures and Implementations” for the The 4th International Symposium on Computing and Networking CANDAR’16 held in Hiroshima, Japan, November 22-25, 2016.

The photo was taken in the Higashi Hiroshima Arts and Culture Hall, the venue of the conference.