Kristjan Kannike

Programming

The book How to Think Like a Computer Scientist explains programming basics via Python.

In the article “Why Functional Programming Matters”, John Hughes argues that functional languages allow for better modularisation of programs.

Structure and Interpretation of Computer Programs video lectures with the book of the same name is an excellent introduction to computer science.

Magic Ink: Information Software and the Graphical Interface is an essay considering software design as a case of classic graphical design.

What Every Computer Scientist Should Know About Floating-Point Arithmetic is a thorough overview by David Goldberg.

Programming Fonts

Fira Code font for programming contains many ligatures that make code more pleasant to look at.

Unicode

Joel Spolsky reviews Unicode and the encodings preceding it.

Alan Wood’s Web Site: Unicode support in browsers, Unicode symbol tables, and advice for writing multilanguage web pages. In addition: the character entity table of HTML 4.0.

Python

Python is a language with simple, laconic syntax, easy to learn, yet powerful. Owing to high level data types and support for object oriented programming, complex applications can be written in Python. The Python tutorial comes with the language interpreter.

Python Tutorial is a concise review of the language.

The Python Grimoire is a quick recipe book for most needed things.

Python Quick Reference is a handy review of most used options, methods, and modules.

Dive into Python (Dive into Python 3) by Mark Pilgrim is an in-depth introduction to Python with applications on HTML and XML processing and web services in the later chapters.

Text Processing in Python by David Mertz gives an in-depth introduction to that ubiquitous task, including regular expressions, parsers and Unicode.

Python tutorials refers to about 200 tutorials, both general and specific (e.g. GUI programming, XML processing, scientific computing).

Haskell

Haskell is a pure functional language where even the problem of side effects is solved elegantly.

Haskell Tutorial for C Programmers is a primer for people used to imperative programming.

Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen is a thorough introduction with many examples.

Haskell Cheat Sheet is a fast overview of basic syntax.

Quick overviews Tour of the Haskell Syntax and Tour of the Haskell Prelude (the basic library).

A Tutorial on the Universality and Expressiveness of Fold” is an overview of this ubiquitous function by Graham Hutton.

State of the Haskell Ecosystem gives an overview of how well are different programming needs covered by Haskell packages.

In how many ways can one define the factorial? The Evolution of a Haskell Programmer ranges from the obvious to the baroque.

Monads

Tackling the awkward squad” by S. P. Jones is an overview of monads, concurrency, exception handling and calling other languages in Haskell.

GHC

A Guide to GHC‘s Extensions details many useful compiler extensions to the language.

Mathematica

An Elementary Introduction to the Wolfram Language” is written by Stephen Wolfram, the creator of Mathematica.

Mathematica Programming: An Advanced Introduction” by Leonid Shifrin is a thorough introduction centred on functional programming.

Can one identify the design patterns of Mathematica? discusses memoisation, linked lists and other design patterns.

Scientific Visualization and Graphics with Mathematica gives advice on creating 2D and 3D graphics, and animations.

FixPolygons is a useful package to join same-colour polygons in e.g. ContourPlots.

Asymptote

Asymptote is a powerful modern programming language for generating 2D and 3D vector graphics, suitable for drawing mathematical figures or patterns. It can take advantage of all the features of the PDF format, such as gradients and transparency, and works well with LaTeX.