Q:

Brute-force algorithm to find the set of all empty triangles

Given a set P of points in the plane, specify a naive brute-force algorithm to find the set of all empty triangles with vertexes in P. (A triangle with vertexes a, b, c belong to P is empty if it contains no other point d which belongs to P.)
How shall I start solving this type of problem? Are there any existing algorithm which I should look up or you think I would have to sketch it out with a few points?

A:

Given a set P of points in the plane, specify a naive brute-force
algorithm to find the set of all empty triangles with vertexes in P.
(A triangle with vertexes a, b, c belong to P is empty if it contains
no other point d which belongs to P.)
How shall I start solving this type of problem?

Well bottom up:

For a single triangle and a single point, write a function contains, which tests, whether the point is in the triangle.
For a single triangle and a group of points, look whether whether there is no point contained in the triangle. Call this isEmpty.
For a group of triangles, test each.

Keywords are: iteration, predicate, filter.

You should write tests on each stage, points in the triangle, outside, bordercases. Test as early as possible.
Write testmethods, to make testing easy.
Then Triangle.isEmpty or how this would look in your language.

Top down would work too. Then you might need mock-functions for testing. But I don't see advantages vs. bottom up.
Pseudocode:
Triangle.contains (p: Point) : Boolean ()

Triangle.isEmpty (ps: Pointset) : Boolean = 
    ps.forAll (p => ! t.contains (p))

triangleset.filter (t => t.isEmpty (pointset))

