The paper is dedicated to specification, synthesis, and implementation of digital systems. The emphasis is done on application of reconfigurable technology, which is widely employed today. At the beginning, traditional methods of digital design are briefly reviewed and it is shown how these methods can be adapted to new computer-aided tools. The importance of hardware and system-level description languages as well as hierarchical specifications and designs is emphasized. Then contemporary techniques are discussed namely the usage of templates, intellectual property cores, block-based diagrams that enable different cores to be integrated, and parameterization methods. A number of examples are given. To increase system performance parallelism and concurrency are widely applied and we will demonstrate how they can be used efficiently. Since digital devices need to be further integrated into more complicated systems, we will discuss also such topics as hardware/software interactions and interfaces. Finally, a number of methods developed by the authors will be presented and illustrated on examples. They are from the scope of hierarchical design, logical synthesis, parallel networks for sorting/searching, combinatorial optimization, and hardware/software co-design.