Efficient Encoders And Decoders For Polar Codes: Algorithms And Implementations