However, when I take off the shield, the program is able to run properly.
So, what's the problem? Other than the fact that you bought the same stupid shield everyone else has problems with.
Must I have a GPS antenna in order for it to work
If there is a place for an antenna, one is expected.
// For one second we parse GPS data and report some key values
for (unsigned long start = millis(); millis() - start < 1000;)
{
Stupid concept. The device sends data when it has something to report. You should be reading and storing whatever is available, on every pass through loop, regardless of time.
Regardless, the code does something. You failed to mention what that is.