Lance Clayton (Robin Williams) is an aspiring writer that has never gotten any of his works published so he settles for working as a poetry teacher at the school his son, Kyle (Darly Sabara), attends. One morning Lance walks into his son's room to find him masturbating and practicing autoerotic asphyxiation. Lance thinks he is dead but Kyle just tells him he's fine and to leave the room. On the car ride to school Lance unsuccessfully tries to bond with Kyle, who repeatedly calls him and the music Lance likes a "fag". While walking through school Lance bumps into a fellow teacher, Claire (Alexie Gilmore), whom he is dating.
In the hallway at school, Kyle shows his friend, Andrew (Evan Martin), some European porn but Andrew finds it disgusting. As an attractive girl, Jennifer (Ellie Jameson) walks by, Kyle makes a sexual remark which causes him to get into a fight with another boy nearby. They all get called into the principal's office where the principal (Geoff Pierson) advises Lance to that Kyle should transfer "special needs" school. Lance finds out Mike (Henry Simmons), one of his colleagues, has published an article on a famous magazine. Lance tries to look happy for him, but can't help but feel a bit jealous as he notices Claire taking an interest in Mike. When Lance gets home he finds Andrew on the computer and asks Kyle to send him home. Kyle says he can't because Andrew's mom is an alcoholic.
Lance decides to let him stay. Lance calls Claire while getting ready to go to her house for dinner like they had planned, but Claire cancels on him. Lance spots Claire and Mike having a couple of laughs at the school parking lot so Lance asks Claire if she likes Mike. Claire storms off angry but later makes up with Lance. Later that night Claire cancels yet another date so Lance settles with smoking pot for the night. The next day, while Lance and Kyle are at the mall they spot Claire with Mike. Kyle ditches Lance and decides to go home with Andrew to plug in the new computer screen Lance just bought him.
That night, Lance, Kyle, and Claire go out to a fancy restaurant for dinner. While they are eating Kyle secretly takes a picture of Claire's underwear with his cell phone from under the table. After dinner, Lance drops off Kyle first and then drops off Claire but refuses her offer to have sex. When Lance gets back home he discovers that Kyle has died as a result of practicing autoerotic asphyxiation. To save Kyle and himself embarrassment, Lance buttons up Kyle's pants, hangs Kyle's body from the closet and writes a fake suicide letter in order to fake Kyle's suicide. Once Lance returns to school, he bumps into Andrew in the hallway.
Andrew tells Lance that Kyle didnt seem sad enough to commit suicide but Lance just blows him off by saying Kyle was a "complicated guy". One day, feeling sad, Kyle calls Claire looking for someone to talk to but Claire is at one of Mike's basketball games and blows him off. Lance bakes weed brownies and takes them to his neighbor's house just to have someone to talk to. Sharing an interest in zombie movies, the neighbor invites Lance to watch a zombie marathon on tv, Lance accepts gladly. When Kyle's suicide note, or better yet Lance's, is published in the school newspaper, all attention turns towards Lance as Claire pays more attention to him and more students switch from Mike's class to Lance's. As students inquire more and more about Kyle and his interests, Lance starts making up things. He even starts writing a journal, pretending Kyle wrote it.
The kids at school start wearing shirts with Kyle's picture on them, actually pretending they liked Kyle when they didn't. Andrew talks to Lance about it saying the suicide note didnt seem like something Kyle would write, but once again Lance blows him off by saying Kyle was a smart and complex individual. Lance talks to the grief counselor but he assures Lance that Kyle's suicide note has touched a lot of students causing them to reach out to him. He assures Lance that Kyle may not have died in vain. That weekend Lance writes the rest of "Kyle's journal" which he then gives to the grief counselor telling him to take a look at it and see if he should publish it for it to be valuable to the other students. Claire also takes a look at it and they try to pick out a name for it. They publish the journal which is then handed out to kids at school.
Lance grows all the more popular but it seems as if Mike is starting to get suspicious. Lance cancels on his neighbor by saying he has an emergency even though he is playing golf with Mike and Principal Anderson. There, Principal Anderson tells Lance that he is going to rename the school library after Kyle, even though he had once suggested Kyle be put in a special needs school. Lance gets invited to go on a talk show but as he is getting ready to leave, Andrew visits him and tells him how the journal doesnt sound anything like Kyle. Lance gets a bit worked up and tells him to just let it go and that no wonder his mother drinks, causing Andrew to storm off. After the show, Lance gets a call from someone saying that the journal has caught the attention of several publishers.
The next day at the library dedication, fueled by the guilt of exploiting his sons death for his own benefit and the hatred towards those who pretend to have liked Kyle when in real life they didnt, Lance tells everyone the truth behind Kyles death, revealing that he was the one who wrote the suicide note and the journal. Lance walks through a crowd full of looks of indignation, now that everyone knows he was living a lie. Immediately after, feeling liberated, he runs to the schools pool and dives in naked. Lance is now disliked by everyone except for his neighbor and Andrew who advices him to keep writing. The movie ends with Lance, his neighbor, and Andrew watching a zombie movie..