Short answer: Alex (Miles Heizer), in a steroid-induced rage, pushed Bryce into the water where he drowned. Jessica watched the whole thing happen. The brief answer: Bryce was waiting on the pier after the homecoming game to talk to Jessica, allegedly to give her something he couldn't when he saw her before the game.