This course is not intended for students with a major or minor in Computer Science or Mathematics. This course may not be taken for credit after receiving credit for any course numbered CS110 or above. An introduction to the fundamental concepts and abstractions of computer science, using a study of algorithms and computer programming as a vehicle. A high-level programming language is introduced and used. The organization and inner-workings of computers are covered in some detail, with an emphasis on the relationships among the various levels of hardware and software found in such systems.
Attention is focused on both general concepts and on case studies of specific systems.
Assembly language programming is introduced. An introduction to the fundamental and emergent paradigms, both formal and pragmatic, of algorithms and computation. The Scheme programming language is introduced. A study of the foundations, design, and implementation of database systems. Topics include data models, database design, query languages, database architectures, implementation issues, and case studies.