Development of an understanding of the use of and advances in computer systems. Introduction to computer organization and architecture, emphasizing Boolean logic, gates, buses, digital circuits and computer components. Some assembler programming. Many aspects of computer hardware are introduced, such as gates, flip-flops, Boolean logic, number systems. Formal language theory including finite automata, pushdown automata, grammars, Turing Machines, the Halting Problem, and primitive recursive functions.
Analysis of algorithms is introduced.
The formal models developed to study computation are introduced and studied. There are some proofs. Databases and knowledge bases are introduced, as well as issues related to efficient organization of all kinds of data. Ethical issues related to privacy are investigated. Techniques involved in computer graphics and their use in business, science and entertainment.