Computer science studies computers and computing, including their theoretical and algorithmic foundations, hardware and software, and their uses for processing information. It spans theoretical disciplines such as algorithms, theory of computation, and information theory to applied disciplines, including the design and implementation of hardware and software. The discipline of computer science includes the study of algorithms and data structures, computer and network design, modeling data and information processes, and artificial intelligence. It draws some of its foundations from mathematics and engineering and incorporates techniques such as queueing theory, probability and statistics, and electronic circuit design. Computer science also heavily uses hypothesis testing and experimentation during conceptualizing, designing, measuring, and refining new algorithms, information structures, and computer architectures.