For some programming classes, they allow you to turn in a project late if you had it done on time. What they usually do is look at the “timestamp” of the file, which is the time the file was last modified.
The problem with this is that these timestamps are easy to spoof. You can set the clock back on your computer, save the file, then set the clock back on your computer, and the file retains the false timestamp.
There is an algorithm called MD5, which allows you to get a 32 character hex string based on an partucular input. If my input is “You can’t fake this” then the output is “3132336fe3576c5cee7c7244685a07cd.” If however we change the input slightly by using all lowercase letters in the input string, the output string then becomes, “e2227401e9ee8d2f79d4ed861dad701f,” which is extremely different. To find this string on any particular file, you simply type md5sum filename.txt.
MD5 allows an easy way to tell if a file has been changed. If the strings are the same, then the files are extremely likely to be the same.
So then what the Computer Science department needs is a page that allows students to upload their name and an the output to this md5sum program. The page that accepts these uploads also records the timestamp. Here the server applies timestamps.
Then, if the student completely the project on the due date, but isn’t able to pass it of because the TA is busy, the student can run the md5sum program on their source code and upload it to the web server. At the later point, when the student finally meets with the TA, the student can pass off the program, and then show the md5sum of the program as it was passed off and compare it to the one posted on the web page. The TA now knows there were no modifications to the file since the timestamp shown on the web page.