Arduino UNO unable to upload empty program. LED does not blink

I have a few Arduino UNO rev 3's that I am using with students in my classroom. We had worked through a few projects, and after a few weeks, one of the students found that his Arduino sketch would get stuck on "Uploading".

I have searched the web for different ideas as to why this is happening, but cannot figure out a solution.

I have tried to reset the board with the reset button. I have tried uploading the empty program. I have tried uploading the empty program while pressing reset just before it finishes compiling. I have tried unplugging the USB cable, holding reset, and plugging the cable back in.

None of these things seem to work.

The port shows the correct port. I have tried this on multiple classroom computers (Windows xp) and my laptop (windows 10).

The Arduino had been working.

The L LED is light up (does not blink when plugged in). It stays on. The power LED stays on.

Please help! We are in the middle of culminating classroom projects and down one board!

I should have mentioned ... eventually, the upload times out. This is the error message I get.

Arduino: 1.6.7 (Windows 10), Board: "Arduino/Genuino Uno"

Sketch uses 450 bytes (1%) of program storage space. Maximum is 32,256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2,039 bytes for local variables. Maximum is 2,048 bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x8e
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x8e
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.