How can I actually use the BB84 protocol? I have read how the BB84 protocol could work. However, I couldn't see a way to implement it in the laboratory, so that I could make a demonstration in the university's quantum optics laboratory. 
From what I have read, I think that a way to demonstrate this is to somehow shoot only one photon at a time, each time with a prepared setting for the sender and receiver polarization, but it seems very unpractical. 
 A: It is not necessarily that you need to send a photon, or the more used term qubit at a time, the idea is to send wavepackets of qubits with the same polarization, carrying with it as little qubits as possible. It is a security measure and a technical one at the same time. 
The names I'll be using: Communication between Alice-Bob, with Alice the sender, Bob the receiver and there's Eve trying to eavesdrop on the communication.
A security measure because in reality there's always eavesdropping and many other sources of losses in the quantum channel (fibre optic's length e.g.), so in the ideal case you'd want to have wavepackets with 1 qubit each, this way eve cannot intercept qubits for herself so easily (without being noticed). Even in this case, then of course eve can measure the single qubit wavepackets and re-send them back to Bob but then the qubit doesn't have the same polarization anymore and Bob/Alice will later run procedures (like sifting) to find out about the eventual measurement mismatch.
On the other hand, the technical issue corresponds to the accuracy and sensitivity of the current devices, preparing single photons still remains a challenging task and doing so in a trivial manner is still impossible. Keep in mind that we are not just talking about isolating one photon, but Alice wants to prepare her qubits in well defined polarizations using different polarizers (rectilinear or diagonal), so for example a vertical polarization in the first basis(rectilinear) would correspond to the classical "1" or "true" bit and so on... Furthermore even if she could prepare single qubits, you'd need very sophisticated detectors to be sensitive enough to detect and measure singular photons.
All of this means that (for your experimental interests) you should first take care of how you prepare the polarizations and how you measure them on Bob's side, and not bother with the number of qubits in a wavepacket so much. Simplest would be extremely low intensity light rays, and usual optical polarizers composed of horizontal/vertical metallic grids (e.g. vertical metallic grids lets through horizontal polarization). 
Another important useful aspect is the "time log" that both Alice and Bob should have, meaning the time of sending (Alice's side) and of reception (Bob's side) will be the key to their synchronization (as you can know the distance between them). To illustrate imagine the following scenario: the chosen laser intensity is as low it can be (lets say 100 photons per packet), Bob needs to measure at least one of them (100 here is equivalent of the ideal single qubit), and write down its measurement result (e.g. horizontal in diagonal basis) and its time of detection. By doing so for each one, once the protocol is over, based on their time logs they will know what qubits to compare.
I guess in your case, as it is just a casual experiment (no need for diversity in basis for now), use rectilinear polarizers (polarize the photons linearly) and you could even count the photons received each time, to deduce the channel loss or even the saturation limit of the detectors you'll be using (if the rate of qubits goes too high then of course the detector will not necessarily be able to detect each single one of them). You shouldn't underestimate all these error sources. So first get to know your setup by doing these backup measurements, before getting into the protocol setup itself.
Other ways of preparing polarized photons do exist, but they're not too interesting for our case (i.e. your experiment), like using beta barium borate crystals, which is able to split photons in different directions based on their polarizations.
One last note, it is indispensable to use a fibre optic channel for this experiment, as ideally one wants to reduce to a minimum sources of photon-loss and others that would destroy the prepared polarizations.
Let me know if you have any further, technical or theoretical questions. 
A useful link for you would be the online QKD simulator that has been written very recently, it allows you to choose all the parameters of the protocol (qubit number, basis selection etc) and run the simulation, it gives an overview of the stats of a complete run of the protocol. It is complete, so all the classical procedures are also there (error correction, universal hashing and...).
QKD simulator
