This is a summary of what I do.
I study computer science. Love programming and solving problems computationally. Here's one for example - how do you instruct how to draw lines? Depends on who's doing the actually drawing, if it's a human - you just need to provide a start point and an end point. Almost always the result will be an acceptable line. Let's explore if it's a machine that is doing the drawing.
Then you have to explicitly define, what to do each step of the way. Say the line you're interested in is in R^2, then you think in terms of how much of a rise does it have (y) over the run (x). We can iterate over the run and using the slope (rise/run) as a function, map each value during the run to the rise. And this works for some cases, but it falls apart, for example, when the change in y is greater than the change in x.
Fortunately, this problem can be mitigated if we measured the size of the change (delta) both of the rise and the run. And subsequently we would only need to keep track of the accumulating error, I.e. the sum of deltaY/deltaX, and when that is over the threshold of a single drawing cell, move the point up as well as to the right.
Some more information: