Pseudo-random sequences are essential ingredients of every modern digital communication system including cellular telephones, GPS, secure internet transactions and satellite imagery. Each application requires pseudo-random sequences with specific statistical properties. This book describes the design, mathematical analysis and implementation of pseudo-random sequences, particularly those generated by shift registers and related architectures such as feedback-with-carry shift registers. The earlier chapters may be used as a textbook in an advanced undergraduate mathematics course or a graduate electrical engineering course; the more advanced chapters provide a reference work for researchers in the field. Background material from algebra, beginning with elementary group theory, is provided in an appendix.