周期性時間領域ディジタル信号 $f[i]$ のスペクトルを求めるためには「DFT (Discrete Fourier Transform: 離散フーリエ変換 )」というテクニックを使います。
具体的には以下で定義される「DFT係数」を求める演算の事を DFT と言います。

定義: DFT (Discrete Fourier Transform: 離散フーリエ変換)

$k$ を任意の整数とした時

\[ \textrm{DFT}[k] = \frac{1}{\textrm{N}} \sum_{i=0}^{\textrm{N}-1} \left \{ f[i] \cdot \textrm{e}^{\{-j \cdot k \cdot \frac{2\pi}{\textrm{N}} \cdot i \}} \right \} \]

$\textrm{DFT}[k]$ ・・・$k$ 番目のDFT係数、複素数の定数

$f[i]$ ・・・ 周期 $\textrm{N}$ [点] の周期性時間領域ディジタル信号

なお総和記号の前についている $1/\textrm{N}$ を「正規化パラメータ」と言います。
正規化パラメータは振幅スペクトルのスケールを調整するパラメータであり、目的に応じて任意に設定しても良い値です。
このアクティビティでは $1/\textrm{N}$ としていますが文献によっては正規化パラメータの値が異なりますので注意してください。

さてこの DFT 係数は周期 $\textrm{N}$ の周波数領域ディジタル信号であり、$n$ を任意の整数とした時

\[ \textrm{DFT}[k] = \textrm{DFT}[k + n \cdot \textrm{N}] \]

が成り立ちます。
また DFT 係数は複素共役関係の性質を持っていて

\[ \textrm{DFT}[k] = \textrm{DFT}^{*}[-k] \]

または

\[ \ \textrm{DFT}^{*}[k] = \textrm{DFT}[-k] \]

が成り立ちます。
これら2つの性質により、DFT 係数は $k = 0$ から最初の $\textrm{N}/2$ 個だけ値を求めれば全ての $k$ に対する DFT 係数が求まります。

※ 正確に言うと周期 $\textrm{N}$ が奇数なら $k=0,1,\cdots,(\textrm{N}-1)/2$ の $(\textrm{N}-1)/2+1$ 個、 偶数なら $k=0,1,\cdots,\textrm{N}/2$ の $\textrm{N}/2+1$ 個必要

逆に DFT 係数 から元の $f[i]$ を復元する演算を「IDFT (Inverse Discrete Fourier Transform: 逆離散フーリエ変換)」と言います。
IDFT の定義は以下の通りです。

定義: IDFT(Inverse Discrete Fourier Transform: 逆離散フーリエ変換)

$i$ を任意の整数とした時

\[ f[i] = \sum_{k=0}^{\textrm{N}-1} \left \{ \textrm{DFT}[k] \cdot \textrm{e}^{\{j \cdot k \cdot \frac{2\pi}{\textrm{N}} \cdot i \}} \right \} \]

$f[i]$ ・・・ 周期 $\textrm{N}$ [点] の周期性時間領域ディジタル信号

$\textrm{DFT}[k]$ ・・・$k$ 番目のDFT係数、複素数の定数

なお $f[i]$ は周期性の信号でしたので $f[0]$ 〜 $f[\textrm{N}-1]$ の値を求めれば全ての $f[i]$ が求まります。