Where are the faces? Python Mesh script
Trivial case with bpy.ops.mesh.primitive_plane_add()

import bpy
context = bpy.context

b = 10
bpy.ops.mesh.primitive_plane_add(radius=b)
g_o = context.object
g_o.name = "GroundO"
g_d = g_o.data
g_d.name = "GroundM"


Use bmesh
Strongly recommend getting familiar with bmesh as soon as possible. Trying to use the mesh methods (esp. to create), other than from_pydata(..) as pointed out in answer from @atomicbezierslinger, will drive you nuts.

import bpy
import bmesh
scene = bpy.context.scene
g_d = bpy.data.meshes.new(name="GroundM")
g_o = bpy.data.objects.new(name="GroundO", object_data = g_d)
scene.objects.link(g_o)
g_o.location = (0,0,0)
g_o.select = True
scene.objects.active = g_o

bm = bmesh.new()
bm.from_mesh(g_d)
# Fill in the data for the mesh
b = 10
v1 = (-b,b,0)
v2 = (b,b,0)
v3 = (b,-b,0)
v4 = (-b,-b,0)
verts = [v1, v2, v3, v4]
bmverts = [bm.verts.new(co) for co in verts]

bm.faces.new(bmverts)
bm.to_mesh(g_d)
scene.update()


or easier still with bmesh.ops.create_grid(...)

import bpy
import bmesh
scene = bpy.context.scene
g_d = bpy.data.meshes.new(name="GroundM")
g_o = bpy.data.objects.new(name="GroundO", object_data = g_d)
scene.objects.link(g_o)
g_o.location = (0,0,0)
g_o.select = True
scene.objects.active = g_o

bm = bmesh.new()
bm.from_mesh(g_d)
# Fill in the data for the mesh
b = 10
bmesh.ops.create_grid(bm, x_segments=1, y_segments=1, size=b)
bm.to_mesh(g_d)
scene.update()