Digging up this old post because I thought the OP's assignment is interesting (basically building a real-time display of the spectrum of an audio signal) and because I think the answer to his question can be improved upon. If I understand correctly, he would like to know two things: (1) What is frequency resolution (in the context of a DFT computation)? and (2) What should timestep dt
be?
I will attempt to answer (1).
Suppose you have a continuous-time signal $x_c(t)$ which you can think of as physically corresponding to an analog signal which you've pre-recorded (I don't know how, but "pre-recorded" in the sense that you can replay the same analog signal). To get $x(n)$ you sample the analog signal periodically every $T$ seconds (i.e., $f_s = \frac{1}{T}$):
$x(n) = x_c(nT)$
which, for the duration of the audio file, might contain a total of $N_{max}$ samples. The length-$N$ DFT takes the sampled signal $x(n)$ for $n = 0, 1, 2, ..., (N-1)$ with $N \leq N_{max}$ and computes values that are proportional to projection coefficients (if you read chapter 5 and 6, you'll get a better sense of what a coefficient-of-projection geometrically represents — although it is essentially the length of a vector).
A length-$N$ DFT gives you $N$ values such that, if you were to divide each value by $N$, would result in the set of magnitudes of sampled complex sinusoids (of various frequencies) that add up (in the vector addition-sense) to $x(n)$. The book calls those sampled complex sinusoids $s_k = e^{j\omega_knT} = e^{j2\pi\frac{k}{N}n}$ and geometrically each $s_k(n)$ is a 3D-spiral (the higher the frequency, the bigger $\omega_k$, the tighter the spiral winds — but note that there is a limit to how tight the spiral winds get). The frequency of each sampled complex sinusoid is $w_k = 2\pi\frac{k}{N}f_s$.
When we say "the magnitude of the frequency component $w_k$ of the signal $x(n)$ is $X(w_k)$", we are actually referring to the result of this finite sum: $X(k)= X(\omega_k)=\sum\limits_{n=0}^{N-1} x(n)s_k^{*}(n)= \sum\limits_{n=0}^{N-1}x(n)e^{-j\omega_knT}= \sum\limits_{n=0}^{N-1}x(n)e^{-j(2\pi\frac{k}{N})n}$.
That is the definition of the DFT. The input to the DFT is the frequency you want by specifying a value $k$ (referred to as the $k$'th frequency bin), which through the definition $w_k$ will yield a frequency value.
$k$ is an integer defined in a manner similar to $n$. Specifically $k = 0, 1, ..., (N-1)$. The frequency resolution (in units of radians) is just the difference between any two consecutive $\omega_k$'s:
$(\omega_{k+1})-(\omega_k) = (2\pi\frac{k+1}{N}fs) - (2\pi\frac{k}{N}fs) = \frac{2\pi f_s}{N} $
Which in units of Hz is just $\frac{f_s}{N}$. Geometrically, frequency resolution is the angular displacement between consecutive roots of unity. In the context of the DFT computation, the frequency resolution is the difference between two consecutive frequencies for which you can obtain spectra samples (i.e., the difference in frequency between two consecutive frequencies for which $X(\omega_k)$ is defined).