Almost all vote counting is done by computer. However, vote counting presents some interesting problems for software engineers. You see you must not only must the process be accurate, but it must be obvious to any of the many poll watchers that the process is accurate. Because if we loose confidence in the accuracy of the system that counts our votes, we loose confidence in our entire political system.
Here in San Diego we use a punch card ballot. In fact the punch card is the same size and shape as the old IBM punch cards of days gone by. After the voter casts his ballot by punching the proper holes, the card is dropped in a ballot box.
At the end of the day the ballot boxes are taken to a collection site and from there to the counting site at the Registrar of Voters office.
There the seals on the ballot boxes are inspected and the boxes opened. The ballots themselves are then inspected to make sure that all the punches went through cleanly and stacked. Each stack of cards has a set of special cards added to the beginning and end of it to identify the precinct it came from as well as other information.
The cards are then fed through a card reader where a computer tallies the votes.
Counting ballots is not as simple as it sounds. San Diego is made up of many different kinds districts, such as County Board of Supervisor Districts, House of Representative Districts, City Council Districts, School Board Districts, Irrigation Districts, and so on. Each of these districts has their own, different boundaries. The ballot for each precinct is determined by what districts it's in.
In San Diego County there are 196 different district sets each requiring their own style ballot. What's worse, there are 8 parties and during the primary that means there are 9 different ballots for each precinct (1 for the independents.) So in one election there are 1,764 different types of ballots that the Registrar has to deal with.
Keeping that mess straight is a daunting task.
Before each election several test runs are made. These test out the card reading equipment using special decks. The goal is not so much to check out the computer software, but to check out the card readers. You see most punch card equipment is very old and easily breaks down.
After the election, 1% of the precincts are randomly selected for audit. The cards for these precinct are pulled and hand counted. This count is then verified against the computer generated one.
The system used in San Diego County is a good one. There is very little chance a hacker can screw up the election.
One of the biggest security holes in a computer system is communication spoofing. That's where the hacker taps in to the communication line between two computers and inserts false data or commands.
Such spoofing is not possible at the San Diego Registrar of Voters. Only one central computer is used, so there is no communications between machines.
Another way a hacker could affect the outcome is to insert a malicious program into the computer that counts the votes. However, the hand audit would quickly find any problems with the count itself.
Also everything is done in a "fish bowl." Anyone can go down and watch the ballots being counted.
So the ballot box appears to be secure from tampering.
Some people might wonder, "Why bother to vote. My vote doesn't count."
If you are one of those people, I encourage you to go down to your local politician's campaign office. Volunteer to work there for a day. You'll see how much effort and money they spend trying to get your vote.
You may not value your vote, but they sure do. Get out and vote this election.