The Weierstrass Form
Using Bezout’s Theorem, it can be shown that every irreducible cubic has a flex (a point where the tangent intersects the curve with multiplicity three) or a singular point (a point where there is no tangent because both partial derivatives are zero). [Reducible cubics consist of a line and a conic, which are easy to study.]
Irreducible cubics containing singular points can be affinely transformed into one of the following forms:

\(Y^2 = X^3\)

\(Y^2 = X^2(X1)\)

\(Y^2 = X^2(X+1)\)
(I’m not sure if this is true for all characteristics.)
An irreducibe cubic with a flex can be affinely transformed into a Weierstrass equation:
We only consider cubic equations of this form. Define:

\(b_2 = a_1^2 + 4 a_2\)

\(b_4 = 2a_4 + a_1 a_3\)

\(b_6 = a_3^2 + 4 a_6\)

\(b_8 = a_1^2 a_6 + 4a_2 a_6  a_1 a_3 a_4 + a_2 a_3^2  a_4^2\)

\(c_4 = b_2^2  24 b_4\)

\(\Delta = b_2^2 b_8  8b_4^3  27b_4^2 + 9b_2 b_4 b_6\). This is the discriminant.

\(j = c_4^3 / \Delta\) for \(\Delta \ne 0\). This is the \(j\)invariant.
Fact: The discriminant is zero if and only if the curve is singular.
Fact: Isomorphic curves over some field \(K\) have the same \(j\)invariant. Two curves with the same \(j\)invariant are isomorphic over \(\bar {K}\).
This equation can be further simplified through another affine transformation. Let \(K\) denote the field we are working in. If the \(\mathrm{char} K \ne 2\), then completing the square on the left hand side (and performing an appropriate variable substitution) eliminates the \(XY\) and \(Y\) terms. In addition, if \(\mathrm{char} K \ne 3\), then a similar trick eliminates the \(X^2\) term (whereas if \(\mathrm{char} K = 3\) we can eliminate either the \(X^2\) or the \(X\) term).
If \(\mathrm{char} K = 2\) then one of the following two forms can be obtained:

\(Y^2 + XY = X^3 + a_2 X^2 + a_6\) (the nonsupersingular case)

\(Y^2 + a_3 Y = X^3 + a_4 X + a_6\) (the supersingular case)
In Weierstrass form, we see that for any given value of \(X\), there are at most two values that \(Y\) may take. If \(a_1 = a_3 = 0\) (which is always the case for \(\mathrm{char} K \ne 2\), we have that if \((x,y)\) is a point, then \((x, y)\) is the other point with the same \(x\)coordinate.
Example
Consider the cubic Fermat curve
Assume \(\mathrm{char} K \ne 3\) (otherwise the curve is the same as \((X + Y)^3 = 1\)). An affine transformation takes it to its Weierstrass form:
If \(\mathrm{char} K \ne 2\) then we can further transform this to