CS As She Is Wrote
Subjects for which we ought to have lists of papers along with accrued accoutrements. Adapted from https://en.wikipedia.org/wiki/Outline_of_computer_science
Useful in artificial intelligence and cybernetics.
Foundations for data structures and searching algorithms.
Boolean logic and other ways of modeling logical queries; the uses and limitations of formal proof methods
Theory of the integers. Used in cryptography as well as a test domain in artificial intelligence.
Algorithms and data structures
Sequential and parallel computational procedures for solving a wide range of problems.
The organization and manipulation of data.
The implementation and study of systems that exhibit an autonomous intelligence or behavior of their own.
Solving engines, such as used in Prolog, which produce steps to a result given a query on a fact and rule database, and automated theorem provers that aim to prove mathematical theorems with some assistance from a programmer.
Algorithms for identifying three-dimensional objects from a two-dimensional picture. Geometric Approach to tracking mechanical motion
Automated creation of a set of rules and axioms based on input.
Biologically inspired algorithms.
Natural language processing
Building systems and algorithms that analyze, understand, and generate natural (human) languages.
Algorithms for controlling the behaviour of robots. Geometric Approach to tracking mechanical motion
Communication and security
Algorithms and protocols for reliably communicating data across different shared or dedicated media, often including error correction.
Practical aspects of securing computer systems and computer networks.
Applies results from complexity, probability, algebra and number theory to invent and break codes, and analyze the security of cryptographic protocols.
The design, organization, optimization and verification of a computer system, mostly about CPUs and Memory subsystem (and the bus connecting them).
Systems for managing computer programs and providing the basis of a usable system.
Algorithms both for generating visual images synthetically, and for integrating or altering visual and spatial information sampled from the real world.
Determining information from an image through computation.
Methods for representing and displaying abstract data to facilitate human interaction for exploration and understanding.
Concurrent, parallel, and distributed systems
The theory and practice of simultaneous computation; data safety in any multitasking or multithreaded environment.
- PFPL chapter ?? TODO
Concurrency (computer science)
Computing using multiple concurrent threads of execution, devising algorithms for solving problems on multiple processors to achieve maximal speed-up compared to sequential execution.
- PFPL chapter ?? TODO
Computing using multiple computing devices over a network to accomplish a common objective or task and thereby reducing the latency involved in single processor contributions for any task.
- PFPL chapter ?? TODO
the set theoretic and algorithmic foundation of databases.
non-relational databases such as NoSQL databases.
Study of algorithms for searching and processing information in documents and databases; closely related to information retrieval.
Programming languages and compilers
Theory of compiler design, based on Automata theory.
- A gentle introduction to multi-stage programming
- DSL Implementation in MetaOCaml and Template Haskell and C++
- The Design and Implementation of BER MetaOCaml
- Go Meta!
- The Mystery of the Tower Revealed
- Boehm Thesis (and in the original French)
Programming language pragmatics
Taxonomy of programming languages, their strength and weaknesses. Various programming paradigms, such as object-oriented programming.
- Open, extensible object models
- Strachey: Fundamental Concepts in Programming Languages
- Wilson: Uniprocessor GC Techniques
- Bacon et al: A Unified Theory of Garbage Collection
- How to make ad-hoc polymorphism less ad-hoc (and accompanying notes)
- KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs
rigorous mathematical study of the meaning of programs.
Formal analysis of the types of data, and the use of these types to understand properties of programs — especially program safety.
- Cardelli & Wegner: On Understanding Types, Data Abstraction, and Polymorphism
- Cardelli: Basic Polymorphic Typechecking
- Milner, A Theory of Type Polymorphism in Programming
- Practical Foundations of Programming Languages (PFPL)
- Type Systems for Optimizing Stack-based Code
- On the expressive power of programming languages
- The Design of Terralang
constructing mathematical models and quantitative analysis techniques and using computers to analyze and solve scientific problems.
Approximate numerical solution of mathematical problems such as root-finding, integration, the solution of ordinary differential equations; the approximation of special functions.
Manipulation and solution of expressions in symbolic form, also known as Computer algebra.
Numerical simulations of large non-analytic systems
Computational modelling of theoretical chemistry in order to determine chemical structures and properties
Bioinformatics and Computational biology
The use of computer science to maintain, analyse, store biological data and to assist in solving biological problems such as Protein folding, function prediction and Phylogeny.
Computational modelling of neurophysiology.
The principles and practice of designing, developing, and testing programs, as well as proper engineering practices.
Approaches, principles and pragmatics of verifying programs
Mathematical approaches for describing and reasoning about software design.
Using ideas from algorithm theory to creatively design solutions to real tasks.
The practice of using a programming language to implement algorithms.
The study and design of computer interfaces that people use.
The application of the scientific method to the understanding of arbitrary existing software.
Theory of computation
Different logical structures for solving problems.
What is calculable with the current models of computers. Proofs developed by Alan Turing and others provide insight into the possibilities of what may be computed and what may not.
- Breaking through the normalization barrier: a self-interpreter for F-omega
- A self-intepreter for System T
Computational complexity theory
Fundamental bounds (especially time and storage space) on classes of computations.
Quantum computing theory
Explores computational models involving quantum superposition of bits.
Interesting, but as yet uncategorized papers