In addition to the lecture notes, 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.
- ``Computation Structures'' by Ward, S. A. and Halstead R. H., MIT Press, 1990.

- Computer Architecture books.
- ``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.

- Books on Computer Arithmetic:
- Milos D. Ercegovac and Tomas Lang. Digital Arithmetic, The Morgan Kaufmann Series in Computer Architecture and Design.
- Parhami, Behrooz, Computer Arithmetic: Algorithms and Hardware Designs, Oxford University Press, New York, 2000.

- Books on parallel algorithms:
- Introduction to Parallel Algorithms and Architectures: Arrays, Trees, Hypercubes by Frank Thomson Leighton.