I am trying to add a boolean modifier to a cube, cut a hole in a face but it does not appear to be working.
You can't see the result of the boolean operation because both meshes are visible. If you disable the visibility of the cutting object you can see the result of the boolean operation.
But you should really try to avoid using booleans for simple operations like this. Booleans will create very messy topology that will give you headaches down the line. There is a indeed a time and a place for booleans, but if you are starting with blender, start on a more solid footing by learning other ways that will yield proper topology.
You won’t see the hole in the face of the cube until the modifier is applied. One way to see if the boolean worked is to display the appearance of the cylinder as a wireframe. To do this go in Properties editor > Object > Display> Wire. Or check this link on how to make objects transparent.
I don’t use the boolean modifier that much because it destroys the topology of the surface(s) where the boolean is applied but there are ways around it to fix it.
Well, part of your problem could be that the default cube has no thickness, and of course you can't see the hole made by the boolean modifier if the cylinder is rendered solid.
Here you see what I mean, and how to solve:
Changing the cylinder to "wire" lets you see the hole, but the hole is wrong because the cube has no thickness. Adding a solidify modifier and putting it before the boolean makes a much better hole.