Software development final exam: Part 3

This is part 3 of my software development final exam. If you haven't read that introductory blog post, please go read it now.


  1. You have a spam filter which marks 99% of spam messages as spam, and 99% of non-spam messages as non-spam (and gets the other 1% wrong). 95% of the email arriving at your server is spam. What fraction of messages in your inbox are spam? What fraction of messages in your spam folder are not spam?
  2. What is the difference between a hash function [EDIT: make that a cryptographic hash function] and a message authentication code?
  3. Define


    Show work — a formal proof is not required, but I'd like to see more than just the answer. (2-3 sentences is probably about right.)
  4. You are testing two different versions of a website (A and B) to determine which one yields a higher sign-up rate. You know that if version B is 10% more effective than version A, then once N visitors have reached your site there is a 90% chance that version B will have produced more signups than version A. Approximately how many visitors would you need in order to have that same 90% chance, if version B is instead only 5% more effective than version A?
  5. Why should a message be "padded" (and not just with zeroes) before being encrypted or signed using RSA?

If you would like me to grade your answers, please send an email to with your answers to the above questions along with the following two:

Please note that the questions are intended to be answered under "exam conditions", i.e., without discussion with anyone else, and without consulting Google, Wikipedia, or other sources. I'm running this as an experiment to see how much basic computer science software developers know, and in what areas, so please don't "cheat".

Part 4 of the exam — networking and systems — is now available.

Posted at 2012-10-10 09:10 | Permanent link | Comments
blog comments powered by Disqus

Recent posts

Monthly Archives

Yearly Archives