hardware fundamentals