In addition to the lecture notes which I will try to complete this year for the whole course, you might find the following references useful:

- Books on Boolean functions. These books are mathematical texts that
deal also with issues such as designing fast circuits for various
functions (e.g., fast addition, multiplication, division) and lower bounds.
- "The complexity of Boolean functions" by Ingo Wegener, Wiley-Teubner, 1987. This book (called the blue book) even has an online version.
- ``Boolean functions and computations models'' by Peter Clote and Evangelos Kranakis, Springer, 2001.

- Books on digital design. These are texts that discuss various
issues in digital design and present combinational modules and
synchronous circuits.
- ``Introduction to Digital Systems'' by Ercegovac, Lang, and Moreno, Wiley, 1999.
- Lecture notes by Ami Litman (in Hebrew).
- ``Computation Structures'' by Ward, S. A. and Halstead R. H., MIT Press, 1990.

- Computer Architecture books.
- ``Computer Organization and Design, The Hardware Software Interface'' by Hennessy and Patterson.
- ``The Complexity of Simple Computer Architectures'' by Silvia M. Müller and Wolfgang Paul, 1995.
- ``Computer Architecture: Complexity and Correctness'' by Silvia M. Müller, Wolfgang Paul, 2000.