Ok, Now many of those types of games the enemy didn't have to much artificial intelligence, and I imagine you want to give your game a more feel of intelligence.
What we need to do is give the perception of intelligence, yet keep it reasonable. Obviously we as programmers could program the game so that the enemy always hits the ship. But this is not that good or fun for the player. The same would hold true for most games; picture a hockey game where the goalie saves every possible shot, or a computer ai that scores everytime it shoots; not good. So how do we level things out without making the AI to complex for the given situation. I believe a possible answer is this
Let the computer enemy know the coordinates of the player ship, but in earlier levels make it so that the player gets a chance to update his/her position/firing... say, 7 times for every one time the enemy gets a chance to upate it's targeting. As the game increases in levels you can bring down the number of times you process the users input compared to the computers targeting routine say 6 times, 5 times, 4 times. To add more realism have a small percentage of error introduce into the computers ability to target the player, or you could have certain ships that have a better chance of accuracy. You could also decrease the accuracy for the enemy ships depending on a basic distance form the player and/or angle of attack.
I'm not exactly if this is what you are asking, or do you need specific code to sow how to have a bullet travel from the enemy to the target and then check for collsion?