A method performed at a transmitter comprising: receiving a plurality of bits at a polar encoder, the plurality of bits representing a plurality of q -ary symbols, where q > 2; encoding the plurality of bits using the polar encoder to generate a codeword x of q- ary symbols represented by bits, wherein the output of the polar encoder can be expressed as x = uG, where G is a generator matrix and u is an input vector; puncturing the codeword according to a puncturing pattern to obtain a punctured codeword having a reduced bit length; characterized in that the codeword has bit length N b, wherein the punctured codeword has bit length M, and wherein the puncturing pattern is to puncture the first ( N b - M) bits of the codeword; wherein encoding the plurality of bits comprises: mapping the plurality of q -ary symbols to a subset of positions of an input vector according to an information sequence; setting remaining positions of the input vector as frozen values that are known by a decoder; and encoding the input vector in the polar encoder; the method further comprising obtaining the information sequence by: obtaining a value corresponding to at least one of: a coding rate R to be used to transmit the plurality of bits, and a length M of the punctured codeword; determining which range of values the value falls within; obtaining an information sequence corresponding to the range the value falls within. receiving a plurality of bits at a polar encoder, the plurality of bits representing a plurality of q -ary symbols, where q > 2; encoding the plurality of bits using the polar encoder to generate a codeword x of q- ary symbols represented by bits, wherein the output of the polar encoder can be expressed as x = uG, where G is a generator matrix and u is an input vector; puncturing the codeword according to a puncturing pattern to obtain a punctured codeword having a reduced bit length; characterized in that the codeword has bit length N b, wherein the punctured codeword has bit length M, and wherein the puncturing pattern is to puncture the first ( N b - M) bits of the codeword; wherein encoding the plurality of bits comprises: mapping the plurality of q -ary symbols to a subset of positions of an input vector according to an information sequence; setting remaining positions of the input vector as frozen values that are known by a decoder; and encoding the input vector in the polar encoder; mapping the plurality of q -ary symbols to a subset of positions of an input vector according to an information sequence; setting remaining positions of the input vector as frozen values that are known by a decoder; and encoding the input vector in the polar encoder; the method further comprising obtaining the information sequence by: obtaining a value corresponding to at least one of: a coding rate R to be used to transmit the plurality of bits, and a length M of the punctured codeword; determining which range of values the value falls within; obtaining an information sequence corresponding to the range the value falls within. obtaining a value corresponding to at least one of: a coding rate R to be used to transmit the plurality of bits, and a length M of the punctured codeword; determining which range of values the value falls within; obtaining an information sequence corresponding to the range the value falls within.