Although I am prepared to consider you might be right, we have heard many similar claims on here before and I can't remember one where it turned out that the data was fully normalized.
Well, the table is for all of our education programs: there are 8 different ones, each requiring slightly different information. While, yes, I could have made different tables for each program, they require enough shared information that putting them in one table is FAR easier than different tables--especially when it comes to searches and summarized reports.
The main program--ZooMobiles--is an offsite program, so it requires event time, date, address information, ZooMobile type, misc. notes, payment information (including payment type, date paid, check number, etc.), who facilitated it, which animals went on it (8 fields just from that, because up to 8 animals might be on a ZooMobile), the number of participants, etc. Then there are similar things to consider with the other programs.
Then there's background fields that the user never directly interacts with, such as the AgeCode fields and a check box that is checked behind the scenes indicating that the post-event information has all been entered after the event has occured (this is important because a query automatically displays events that don't have it checked and where the date has already passed).
After a while it all adds up. So I understand that it may SOUND like too big, with the possible exception of things like the AgeCodes (which perhaps your suggestion might have been better), all of the fields are indeed necessary.
So perhaps the number of fields could have been brought down to 130 or 140, but definitely not less than that.