This paper presents a hardware design course for graduate informatics students without any or only a marginal previous knowledge of hardware design. The course starts with the basics of hardware description languages and FPGA programming, discusses the differences between FPGA and standard cell designs, introduces concepts like SoCs and NoCs, and ends up with an introduction to reconfigurable computing. Covering such a broad range of topics, the main challenges for this course are to give the students a rough understanding of the context and problems in the field of hardware design, and to focus on the basic concepts instead of providing detailed knowledge of one software tool or FPGA type. The course is very strongly related to the reconfigurable computing research activities at our institute so that students will be motivated to do their Master thesis in this field. Experiences in teaching such an all-inone course are given and the pros and cons in choosing the course topics are discussed.