Cameron James, a new student at Padua High School in the Seattle area, becomes instantly smitten with popular sophomore Bianca Stratford. Geeky Michael Eckman warns him that Bianca is vapid and conceited, and that her overprotective father does not allow Bianca or her older sister, the shrewish Kat, to date. Kat, a senior, is accepted to Sarah Lawrence College in New York, but her father, Walter, wants her to stay close to home. Bianca wishes to date affluent senior Joey Donner, but Walter, an obstetrician worrisome of teenage pregnancy, will not allow his daughters to date until they graduate. Frustrated by Bianca's insistence and Kat's rebelliousness, Walter declares that Bianca may date only when Kat does, knowing that Kat's antisocial attitude makes this unlikely.
When Cameron asks Bianca out, she informs him of her father's new rule and, as a pretense for allowing her to date Joey, suggests that Cameron find someone willing to date Kat. Cameron selects "bad boy" Patrick Verona, but Patrick scares him off. Michael assists by convincing Joey to pay Patrick to take out Kat, under the pretense that this will allow Joey to date Bianca. Patrick agrees to the deal, but Kat rebuffs his first few advances. Michael and Cameron help him by prying Bianca for information on Kat's likes and dislikes. Armed with this knowledge, Patrick begins to win Kat's interest. She goes to a party with him, which enables Bianca to go as well, much to Walter's dismay.
At the party, Kat becomes upset when she sees Bianca with Joey, and responds by getting drunk. Patrick attends to her, and Kat starts to open up, expressing her interest in starting a band. However, when she tries to kiss him, Patrick pulls away and Kat leaves, infuriated. Meanwhile, Bianca ignores Cameron in favor of Joey, leaving Cameron dejected. Bianca soon realizes, however, that Joey is shallow and self-absorbed, and asks Cameron for a ride home. Cameron admits his feelings for her and his frustration with how she has treated him. Bianca responds by kissing him.
Joey offers to pay Patrick to take Kat to the prom so he can take Bianca. Patrick initially refuses, but relents when Joey offers him more money. Kat is still angry with Patrick, but he wins her over by serenading her with the accompaniment of the marching band, and she helps him sneak out of detention. They go on a date which turns romantic, but Kat becomes suspicious and angry when Patrick insists that she go with him to the prom, an event she is adamantly against. Bianca is irritated that Cameron hasn't asked her to the prom, and so accepts Joey's invitation, but Walter won't allow it unless Kat goes too. Kat confesses to Bianca that she dated Joey when they were freshmen and, succumbing to peer pressure, had sex with him. Afterward she regretted it and Joey dumped her, so she vowed to never again do anything just because everyone else was doing it. Bianca insists that she can make her own choices, so Kat agrees to go to the prom with Patrick, and Bianca decides to go with Cameron instead of Joey.
All is going well at the prom until Bianca learns that Joey planned to have sex with her that night. Angry that Bianca has spurned him for Cameron, Joey reveals his arrangement with Patrick, which causes Kat to leave heartbroken. Joey then punches Cameron, but is in turn beaten up by Bianca for having hurt her, Kat, and Cameron. Bianca and Cameron share another kiss.
The next day, Bianca reconciles with Kat and begins dating Cameron. Walter admits that Kat is capable of taking care of herself, and gives her permission to attend Sarah Lawrence College. For an assignment in which the students were required to write their own version of William Shakespeare's Sonnet 141, Kat reads aloud a poem titled "10 Things I Hate About You", revealing that she still loves Patrick. Patrick surprises her with a guitar bought with the money that Joey paid him, and confesses that he has fallen for her. Kat forgives him, and the two reconcile with a kiss.

Question: Who does Joey punch on prom night?
Answer: Cameron.
Alternative answer: Cameron