|
|
|
|
Projects
Do two or suggest you own.
- 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.
- 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.
- 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.
- 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.
- D and A Exercise 8 chapter 5. This describes a simulation of a HH neuron.
- D and A Exercise 2+3 chapter 7 counts as two projects. This
describes an associative memory network.
- 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.
- 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.
- 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.
- 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.
- 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.
|