Dave's Lecture Demos

Over the past few years I've built up a collection of little VB demo programs that I use in lectures.  Due to popular demand, I've now made these available on this web-site for people to download and play around with.

Please bear in mind that all of these programs are Work In Progress.  They're not structured very well, they've evolved rather than been planned, and there are a few problems with them.  If you think you've found a bug, or have an idea for a new feature, please let me know, and I'll add it to the list here: Known Bugs and Ideas (also, please check here first to make sure your bug is not already known.)

Please note - these programs are not in the public domain.  They are available only for use by my students, or anyone else I've given permission to use them.  If anyone from outside York has come across this website, found these programs and would like to use them, then please get in touch with me at dajp1@ohm.york.ac.uk and ask.  The answer will almost certainly be yes as long as you don't want to use them commercially.

If you want to know how something works in a program, or find a bug, please let me know and I'll try to help.  Due to shortage of time and resources, I can't guarantee to respond, but I will try.

Most of these programs will also time-out in a few months, and refuse to run.  This is my way of making sure that everyone has an up-to-date copy, so I get a chance to find out about, and fix the bugs.  If you find one that tells you it's timed out (or about to time out) when you try and run it, please let me know and I'll update it.  (Perhaps you could add some ideas for other demos and comments in the email?)

Thumbnail of other analogue demoDave's Analogue Modulation Demo Simple little demo to show the waveforms and spectra of a range of common analogue modulation schemes: AM, FM and PM.  Not used much these days as most of this course is now concerned with digital modulation schemes.  (Click screenshot for a larger version.)  There's also an even simpler one (Dave's Other Analogue Modulation Demo) that does real-time modulation of user defined inputs (see right).

Baseband Screen ShotDave's Baseband Modulation Demo This is the most complex one here and there are still a few things I'm not happy with (in particular the energy per symbol is not constant between the modulation schemes, so it can't be used to estimate bit error rates as a function of Es/N0), however I think it's stable enough now to release.    (Click screenshot for a larger version.)


Bridgeing Screen ShotDave's Bridging Demo Illustrates a simplified version of the spanning-tree protocol to eliminate loops in bridged networks.  (Click screenshot for a larger version.)


Channels Screen ShotDave's Channel Demo Another one in an early stage of development.  Illustrates the effect of reflections in wireless/copper communications channels, allowing any channel to be set up, plotting the eye diagrams and spectrum responses and calculating the delay spread and coherence bandwidths.



Complex Screen ShotDave's Complex Numbers Demo Probably the simplest one here.  Demonstrates complex numbers, the Argand diagram, Euler's result, and how to make real oscillations by combining two complex oscillators.


CRC Screen ShotDave's CRC Demo Demonstrates how cyclic redundancy checks are calculated in hardware, showing the flip-flops and XOR gates that do the long division as the bits arrive.  


Dice ScreenshotDave's Dice Demo
This one's here as a .zip file, since you'll need all the pictures of dice as well as the program.  This one was written to help teach basic statistics, and illustrates the difference between mean, median and mode, the theorems about the addition of random variables, and the central limit theorem.  It also has the distinction of being the first one I wrote.


Doppler Screen ShotDave's Doppler Demo This is another one in a very early stage of development, and the use is not very intuitive.  You need to right-click on the sources (square buttons) to move them, and left click on them to turn them on.  The top graph is the individual contributions from each component, the centre graph is the sum, and the bottom graph is the Doppler spectrum, which doesn't work very well yet.


Error Detection Screen ShotDave's Error Detection Demo Illustrates the effectiveness of parity, checksums and cyclic redundancy check approaches to detecting bit errors in packets.  Note that the "Internet" setting doesn't implement the full 16-bit version of the standard Internet checksum, but only an 8-bit version calculated the same way.  It's easier to see on the screen what's happening that way.
  

Flow Screen ShotDave's Flow Control Demo Illustrates stop-and-wait and sliding window flow control, as well as go-back-N and selective repeat error control schemes.  This is one with several known bugs - but due to several requests I'm putting it up here anyway.  If it does something strange, please don't get confused - send me an email and ask.  It's possible that it's the program that's getting things wrong.  Also see Dave's Windows Demo, which does a similar job (although without the router and the time-traces) but in a possibly less-confusing way.

IP Quiz Screen ShotDave's IP Quiz Demo Provides practice with working with IPv4 addresses and bit masks by asking a series of randomly-generated questions.


Layers Screen ShotDave's Layers Demo Demonstrates the ideas of layered networks, headers, connections and reliable protocols.  Note that sometimes the time-out period is set too short, so re-transmissions happen when the packet has not been lost, but that happens in real life anyway, so maybe that's not a bug.


MAC Screen ShotDave's Multiple Access DemoIllustrates ring, star and bus topology networks running ALOHA, CSMA, CSMA/CD, CSMA/CA, Token Passing and Polling multiple access schemes.  There are a few known bugs in this one, mostly to do with the calculation of the utilisation and efficiency; also any node waiting for the channel to become available in a reliable CSMA protocol doesn't wait for the ACK to go past before starting to transmit, which is a bit stupid really.  Use with care (and please let me know if you find it doing something odd).


Markov Screen ShotDave's Markov Chain Demo Simple little application that animates the Markov chains that I talk about in the lectures.



Passband Screen ShotDave's Passband Modulation Demo This one doesn't receive (yet), it just does the transmitter.  Not finished, but I think it gets most things right, and might help to illustrate how to generate FSK and MSK.  Try putting it into "Modulation" mode, then pressing "Pause", then grab and drag the blue circle that appears.

Next up for this one is the inclusion of the OFDM modes.  There's a first stab at this in here now... it's not quite working yet, but should be ready for next year.


Propagation Screen ShotDave's Propagation Demo So far, this one demonstrates the difference between phase and group velocity, how to make circular polarisation from two linear polarisations, attenuation of waves, and Rayleigh and Ricean fading (though the latter two require a bit of refinement).  My long term aim is to get it to do reflection and refraction as well - but that'll have to wait for now.


Queueing Screen ShotDave's Queueing Demo Demonstrates the operation of a series of simple queue types, from simple M/M/1 queues to more advanced multiple-server queues with non-Poisson arrival and service times.  Also useful for illustrating the Erlang distributions.


Refraction Screen ShotDave's Refraction Demo Finally something I can use to demonstrate the idea of the 4/3 Earth Radius, and why it's useful, and how to do problems with obstacles.  Please note (as it says) the diagram is not to scale - it's impossible to make a sensible diagram in which the antennas are big enough to be visible on the same scale as you can see the Earth's curvature.


Routeing Screen ShotDave's Routeing Demo This one probably won't make much sense unless you've seen it in the lecture.  However, if you want to play around with the Bellman-Ford algorithm once you've learned about it, this should do the trick.  Click on a network to select the source of packets, then on a second one to select the destination and send the packet.  Alternatively, click on a source router then a destination router to send a routeing update packet.


Superhet Screen Shot Dave's Superhet Demo    
Another one at an early stage, and still a few bugs here.  The amplitudes are calculated on the basis of a 50-ohm transmission line.  The little checkboxes in the top-right of the signal displays disable the automatic vertical scale feature - useful if noise is causing the scales to change frequently.


Switching Screen ShotDave's Switching Demo Simple little demo to demonstrate the difference between message, circuit and packet switching, and in what circumstances each gives the best performance.





Sudoku Screen ShotDave's Sudoku Solver  What's this got to do with communications lecturing you might ask?  Nothing at all.  It's just that I got fascinated by these things, and I wanted something that could show me how to solve them.  This program tells you what it's doing every stage of the way.  It's not very good yet - there are a lot of techniques it doesn't know about, and it has to guess more often than it should.  But it will solve any puzzle you throw at it if you press the "Auto" button.


Windows Screen ShotDave's Windows Demo  Sliding windows, the slow-start protocol, fast retransmit and fast recovery, delayed acknowledgements and selective acknowledgements, and how they all work together.  Well, that was the idea.  This is unique in that this one was put up here before I'd ever used it in a lecture.  I've tried to follow RFC 2581 where appropriate.


Hope you find them useful, and if you think you've found a bug, please let me know.  Thanks.