acm computing classification system alan turing algorithm algorithm design array artificial intelligence association for computing machinery automata theory automated reasoning automated theorem proving bertrand meyer big o notation bioinformatics biological data cognitive science compiler computation computational chemistry computational complexity theory computational neuroscience computational physics computer architecture computer graphics computer networking computer programming computer science computer security computer vision continuation control flow cryptography cybernetics data mining data structure declarative programming distributed computing finite state machine flowchart formal methods formal semantics of programming languages functional programming game theory graph theory halting problem history of computer science image processing imperative programming information information hiding information retrieval iteration list of computer scientists list of timelines lists of countries lists of people logic programming machine learning mathematical logic neurophysiology number theory numerical analysis numerical integration numerical ordinary differential equations object-oriented programming open directory project operating system parallel computing parsing procedural programming programmer programming language programming language theory prolog protein folding quantum superposition recursion regular expression reverse engineering robotics root-finding algorithm set theory software architect software developer software engineering special functions subroutine symbolic computation theory of computation type theory