This paper surveys the new field of programming methodology and techniques for future quantum computers, including design of sequential and concurrent quantum programming languages, their semantics and implementations. Several verification methods for quantum programs and communication protocols are also reviewed. The potential applications of programming techniques and related formal methods in quantum engineering are pointed out. Chin Sci Bull, 2012, 57: 1903-1909, doi: 10.1007 Even though quantum hardware is still in its infancy, people widely believe that building a large-scale and functional quantum computer is merely a matter of time and concentrated effort. As the techniques of quantum devices progress, architectural studies will become critical for designing and implementing bigger quantum computing systems. Indeed, a research group from top US universities, including MIT and UC Berkeley, has conducted their research on quantum computing architecture, with support from the DARPA Quantum Information Program [1]. On the other hand, once quantum computers come into being, quantum software will play the key role in exploiting the power of quantum computers. However, today's software development methodologies and techniques are purely classical, and they are not suited to quantum computers. In the last 15 years, researchers began to realize the importance of quantum software. In fact, quantum software engineering was listed as a grand challenge in UK Grand Challenges in Computing Research, and the goal of research on quantum software is explained clearly by The challenge is to rework and extend the whole of classical software engineering into the quantum domain so that programmers can manipulate quantum programs with the same ease and confidence that they manipulate today's classical programs. In US, EU and Canada there are already several research teams devoting to theoretical studies of quantum software, in particular quantum programming. More recently in 2010, IARPA in US initiated a Quantum Computer Science Program, and one of its major research issues is high-level quantum programming languages and quantum programming environments, including quantum compilers. Two excellent survey papers of quantum programming are [3,4], two newer surveys are [5] by one of the authors and [6], and [7,8] also contain a brief survey of quantum programming. This paper will further review the field of quantum programming, with emphasis on the authors' recent work conducted at Tsinghua (China) and UTS (Australia). Another quantum programming research group in China is led by Profs. Jiafu Xu and Fangmin Song at Nanjing University [9].