DescriptionWe present various applications of the probabilistic method and polynomial method in additive combinatorics and coding theory. We first study the effect of addition on the Hamming weight of a positive integer. Consider the first 2n positive integers, and fix an alpha among them. We show that if the binary representation of alpha consists of Theta(n) blocks of zeros and ones, then addition by alpha causes a constant fraction of low Hamming weight integers to become high Hamming weight integers. Our result implies that powering by alpha composed of many blocks requires exponential-size, bounded-depth arithmetic circuits over F_2. We also prove a version of the Cauchy-Davenport theorem for general linear maps. For subsets A, B of the finite field F_p, the classical Cauchy-Davenport theorem gives a lower bound for the size of the sumset A + B in terms of the sizes of the sets A and B. Our theorem considers a general linear map L: F_p^n to F_p^n, and subsets A_1, ..., A_n of F_p, and gives a lower bound on the size of L(A_1 X A_2 X ... X A_n) in terms of the sizes of the sets A_1, ..., A_n. Our proof uses Alon's Combinatorial Nullstellensatz and a variation of the polynomial method. Lastly, we give a polynomial time algorithm to decode multivariate polynomial codes of degree d up to half their minimum distance, when the evaluation points are an arbitrary product set S^m, for every d < |S|. Previously known algorithms can achieve this only if the set S has some very special algebraic structure, or if the degree d is significantly smaller than |S|. We also give a near-linear time algorithm, which is based on tools from list-decoding, to decode these codes from nearly half their minimum distance, provided d < (1 - epsilon)|S| for constant epsilon > 0.