This course aims to train students to develop basic techniques and practical skills necessary to design modern digital systems. It covers logic design fundamentals, modern design tools, digital design with VHDL, advanced techniques for stable and high-speed digital system design, digital design techniques using fixed-function ICs, programmable logic devices such as FPGA, interfacing techniques (for memory devices, USB, LVDS, and PCI), and practical issues for board-level designs. All design techniques are taught with design examples including simple logic circuits, sequence controller, a PC-based function generator, and a simple processor. Students are required to carry out team projects.