Programming computers is not easy but still very exciting to do. Since 1970 when I started working at the University of Technology Eindhoven (TU/e) lots of things have been improved. Nobody would have been able to predict that the gigantic big computers at that time are now available at everybody's home desk.
In the beginning of the informatics there were very few education possibilities. In 1965 started the Dutch course 'Wetenschappelijk Rekenaar' (Scientific computator) to train people in writing programs for numerical applications. This course did consist of an A and B examen. For the A certificate one had to reach the mathematic level of the Dutch propedeuse and the basics of numerical mathematics. In the B course there were extra diciplines like discrete mathematics, the art of computer programming and operational research.
In computer science on the University of Eindhoven there was a great emphasis on neat programming languages like Algol and Pascal. The strong typing of these languages allows the compiler to detect human errors which otherwise would only be visible during the processing of the program. Niklaus Wirth has enhanced Pascal with the module concept in his Modula-2 and extended with object oriented programming techniques in his latest child Oberon-2. With the arrival of the Unix operating system less stringent languages like C and C++ became popular. These are closely related to assembly languages which makes the writing of programs in it very laboursome. With scripting languages like the popular PERL writing programs is a lot faster. The arrival of the world wide web resulted in Java and the scripting languages JavaScript and PHP.
On the end of my professional carreer I have been busy with the creation and maintenance of websites, first on the basis of HTML, CSS (Cascading Style Sheets) en JavaScript, later with the content management system TYPO3. The advantage of a good designed CMS is that the basic functionality can easily be extended with plugin modules (extensions). The current implementation of TYPO3 (4.x) reaches it's limits, hopefully they can be solved in the newly developped TYPO3 (5.0).
While providing care for my wife during the COVID-19 pandemic and later when she was in a care home in Uden, I occupied myself with puzzles. First word searches, then Sudokus, and after that, killer Sudokus. Solving them didn't really appeal to me, but writing a computer program to solve them seemed like a fun challenge. I chose the popular programming language Python by Guido van Rossum. It took a while before I found my way around TKinter, the standard for creating graphical user interfaces. I started by writing a program that solves killer Sudokus via backtracking. For this, I was able to use a Python program by Ali Assad that solves Sudokus using Donald Knuth's 'dancing links' method. After this, I started on a program that solves puzzles the way a human does. Solving extremely difficult puzzles is not yet possible, but the hardest puzzle from the first series (#105) of The Times Big Book of Sudoku 1, that I can do now. And to show how that works, I have made a slideshow of it. See slideshow.