A way for creating parity-checks with a low weight on \({{N}}\)  is simply to use subset-sum/collision techniques [1]}, [2]}, [3]}.
We start here with the simplest method for performing such a task pioneered by Dumer in [1]}.
Consider a parity-check matrix \({\mathbf {H}}\)  for the code \( we want to decode and keep only the columnsbelonging to \) N\( to obtain an \) (n-k)(n-s)\( matrix \) HN\(. The row-space of \) HN\( generates the restrictions \) hN\( to \) N\( of the parity-checks \) h\( of \) .
This row-space is nothing but the dual code \(\perp \)  punctured in \({{P}}\) , i.e. we keep only the positions in \({{N}}\) . With our notation, this is \(\perp _{{N}}\)  and is an \([n-s,n-k]\) -code. Therefore if we want to find parity-checks \({\mathbf {h}}\)  of \( such \) |hN|=w\(, this amounts to find codewords of \) N\( of weight \) w\(. For this, we compute a parity-check matrix \) H'\( of \) N\( {\em i.e. }a \) (k-s)(n-s)\( matrix such that\)\(\perp _{{N}}= \lbrace {\mathbf {c}}\in \mathbb {F}_2^{n-s}: {\mathbf {H}}^{\prime } {\mathbf {c}}^\intercal =0\rbrace .\)\(We split such a matrix in two parts\footnote {To simplify the presentation, the cut is explained by taking the first \frac{n-s}{2} positions for the first part and the \frac{n-s}{2} for the second part, but of course in general these positions are randomly chosen.} of the same size \) H'= H1  H2 \(. We obtain an algorithm of time and space complexity, \) T\( and \) S\( respectively, producing \) N\( codewords of weight \) w\(, with\begin{equation*}N = \frac{\binom{\frac{n-s}{2}}{\frac{w}{2}}^2}{2^{k-s}}(1+o(1)) \quad \mbox{and} \quad \mathrm {S}= \mathrm {T}= \mathop {}\mathopen {}O\mathopen {}\left(\binom{\frac{n-s}{2}}{\frac{w}{2}}+N\right).\end{equation*}The algorithm for producing such codewords is to set up two lists,\)\({{L}}_1\mathop {=}\limits ^{\triangle }\left\lbrace ({\mathbf {H}}_1 {\mathbf {h}}_1^\intercal ,{\mathbf {h}}_1): |{\mathbf {h}}_1|=\frac{w}{2},\; {\mathbf {h}}_1 \in \mathbb {F}_2^{\frac{n-s}{2}}\right\rbrace \)\(\)\({{L}}_2 \mathop {=}\limits ^{\triangle }\left\lbrace ({\mathbf {H}}_2 {\mathbf {h}}_2^\intercal ,{\mathbf {h}}_2): |{\mathbf {h}}_2|=\frac{w}{2}, \; {\mathbf {h}}_2 \in \mathbb {F}_2^{\frac{n-s}{2}}\right\rbrace \)\(and looking for collisions \) H1 h1=H2 h2\( in the lists. It yields vectors \) h'=h1 ||h2\( of weight \) w\( which are in \) N\( since \) H' h'=H1 h1+H2 h2=0\(. These vectors in \) F2n-s\( can be completed to give vectors \) hF2n\( such that \) hN=h'\(. The number of collisions is expected to be of order \) n-s2w22/2k-s\( since \) 2-(k-s)\( is the collision probability of two vectors in \) F2k-s\(.The algorithm for performing this task is given by Algorithm \ref {alg:collision}.\) [h!]
Creating low weight parity-checks by collisions
 Input \(, \) w\(, \) P\(\\\hspace*{0.0pt} \textbf {Output} a list of parity-check equations \) h\( of \)  such that \(|{\mathbf {h}}_{{N}}|=w\)  where                    \({{N}}\mathop {=}\limits ^{\triangle }\llbracket 1, n \rrbracket \setminus {{P}}\) .

Create\(,\) w\(, \) P\(\) 
\({\mathbf {H}}\leftarrow {Parity-check-matrix}{\perp ,{{P}}}\) 
returns a parity-check matrix for \(\perp \)  with an identity corresponding to the        positions in \({{P}}\)  :
\({\mathbf {H}}= \begin{pmatrix} {\mathbf {I}}&{\mathbf {P}}\\ \mathbf {0} & {\mathbf {H}}^{\prime } \end{pmatrix}\)  where we assume that the first block corresponds      to the positions of \({{P}}\) .
\({{L}}_1 \leftarrow \lbrace ({\mathbf {H}}_1 {\mathbf {h}}_1^\intercal ,{\mathbf {h}}_1): |{\mathbf {h}}_1|=w/2, {\mathbf {h}}_1 \in \mathbb {F}_2^{\frac{n-s}{2}}\rbrace \) 
\({{L}}_2 \leftarrow \lbrace ({\mathbf {H}}_2 {\mathbf {h}}_2^\intercal ,{\mathbf {h}}_2): |{\mathbf {h}}_2|=w/2, {\mathbf {h}}_2 \in \mathbb {F}_2^{\frac{n-s}{2}}\rbrace \) 
We assume \({\mathbf {H}}^{\prime }=\begin{pmatrix} {\mathbf {H}}_1 & {\mathbf {H}}_2 \end{pmatrix}\) , with \({\mathbf {H}}_1\)  and \({\mathbf {H}}_2\)  of the same size.
\({{L}}\leftarrow \lbrace {\mathbf {h}}_1 ||{\mathbf {h}}_2 \in {{L}}_1 \times {{L}}_2: {\mathbf {H}}_1{\mathbf {h}}_1^\intercal ={\mathbf {H}}_2{\mathbf {h}}_2^\intercal \rbrace \) 
\(\left\lbrace  {\mathbf {h}}^{\prime } {\mathbf {P}}^\intercal  ||{\mathbf {h}}^{\prime } : {\mathbf {h}}^{\prime } \in {{L}}\right\rbrace \) 
It is straightforward to check that \({\mathbf {h}}^{\prime } {\mathbf {P}}^\intercal  ||{\mathbf {h}}^{\prime }\)  belongs to \(\perp \) .
