  A classical method of constructing a linear code over $\gf(q)$ with a
$t$-design is to use the incidence matrix of the $t$-design as a generator
matrix over $\gf(q)$ of the code. This approach has been extensively
investigated in the literature. In this paper, a different method of
constructing linear codes using specific classes of $2$-designs is studied, and
linear codes with a few weights are obtained from almost difference sets,
difference sets, and a type of $2$-designs associated to semibent functions.
Two families of the codes obtained in this paper are optimal. The linear codes
presented in this paper have applications in secret sharing and authentication
schemes, in addition to their applications in consumer electronics,
communication and data storage systems. A coding-theory approach to the
characterisation of highly nonlinear Boolean functions is presented.
