Skip to main content »

Trinity College Dublin

Projects

Do two or suggest you own.

  1. Write a integrate-and-fire simulator with random input. Use typical values of the parameters, such as having the leak voltage equal the reset voltage at -65mV and the threshold at -50mV. A good membrane constant is 10ms and the update should be every half milisecond or so. Have the random input have an overall positive average and adjust it so that the firing rate is 20Hz. Include a refactory period.
  2. Work out the STA of the fly data, that is find the average stimulus a time tau before a spike where tau goes up to 300ms. This is given as exercise eight, chapter one in the exercises to Dayan and Abbott; the difference being that it is given there as a matlab project and here as c++. The data is given there as a matlab file, here it is as a text file: stim.txt and rho.txt.
    • You can do exercises 9 and 10 as well to make two projects. Exercise 9 asks that you look at the two spike triggered average, that it, for each separation t from 2ms to 100ms find all the cases where there are two spikes this distance apart and find the average stimulus at a time tau before the time of the second spike for the same range of tau as in the STA. Quantify how much this two-spike STA differs from the one spike STA as a function of t, for example, using the L2 norm where you sum the square of the differences. You need to do this in the case where two spikes a time t apart count as a pair even if there are spikes between them and in the case where the only count as a pair if there is no intermediate spikes.
  3. Do D and A exercise 2 chapter 2 but you don't need to plot the histograms. This in a sense includes project 2 since it requires that the filter be calculated and again counts as two projects. Basically this question ask that you work out the predicted firing rate using the linear model and then use this to produce spike trains with a Poisson spike generator. This gives a real and artificial spike train and you are asked to calculate to compare their auto-correllations.
  4. D and A Exercises 3+4/5+6 chapter 5 each count as one project, Exercises 3+4 is more or less the same as project 1 above, it describes an integrate and fire neuron and 5+6 changes the input to an excitatory synapse.
  5. D and A Exercise 8 chapter 5. This describes a simulation of a HH neuron.
  6. D and A Exercise 2+3 chapter 7 counts as two projects. This describes an associative memory network.
  7. In Part 5 I give the rule 30 cellular automaton (see Wikipedia) as an example, this was an odd exercise since it was done before vectors were covered and so the state was stored as a string. Write a better version with vectors which prints out spaces and *'s corresponding to the on and off states. This counts as two projects if the user can specify the rule.
  8. Write a programme that calculates the letter-letter correllation of English: that is, the programme should load up a big piece of text and calculate the 27X27 matrix that gives the probability that a is followed by a space or b by c or whatever. Use the matrix to print out random English-ish words. The char reading example in the Part 7 code list might be useful; here it is in its most useful form CharReadIn_3.cpp. If it helps, here is a piece of text: Example.txt/Example.README. If you are using Example.txt be sure to save it as a file by right-clicking, rather than cut and pasting it from the screen, all the carriage returns have been removed so it is one long line and it gets truncated when it is displayed by the browser. The goal is the random words, so you can also do this by some sort of sampling routine; that is, without working out the correllation matrix.
  9. Write a programme that plays tic-tac-toe with the user; the user can input his or her go as a integer between 1 and 9; the computer then prints out the current state of play with X's, O's and numbers in the unplayed squares. Make sure the computer can recognize when the game is won and can reject illegal moves, that is ones where the square is already occupied. This counts as one project if the computer plays randomly and two if it plays optimally. One idea is this: if the game board is stored as a vector with zero for vacent, -1 for X and +1 for O and a function was written to make a vector by adding the scores in each of the eight rows, columns and diagonals, this vector would contain +/- 3's only for wins and +/- 2's for positions that would win next go.
  10. Write a programme that plays the animal guessing game: the programme asks yes/no questions to try and guess an animal: if it gets it wrong it asks you to say what the animal was and to give a question that would have distinguished the animal from the one it guessed. The programme should save all its questions and all its answers in data files and load these up when it opens. One difficulty is how to store the tree of questions and answers and this counts as two projects.
  11. Write a programme that loads in a big chunk of text and then tries to make up a sentence by choosing some words at random. Have it repeatedly ask the user which of the three sentences sounds more like proper English, one being the current sentence and two being other sentences made by randomly changing a word. Replace the current sentence with the choice. A chunk of text is given in project 8. Here is a routine for reaing a text file in to a vector of words: StringReadIn.cpp.