A broad introduction to the field of computer science, intended for non-computer scientists. Topics include: history of computing; digital information representations; computer chip logic design; cryptography; social issues in computing; operating systems; problem solving and algorithms; a challenging programming introduction. This is a rigorous course intended to teach computer science, and will not teach the use of any particular software products. A robust understanding of modern computers and their use is assumed.