Douglas W. Jones

Last updated
Douglas W. Jones
Doug Jones.jpg
Born
Douglas Warren Jones
NationalityAmerican
OccupationUniversity professor, computer scientist
Alma mater
Known for computer security, electronic voting
Awards Phi Kappa Phi, Tau Beta Pi
Scientific career
Fields Computer science
Institutions
Thesis The Systematic Design of a Protection Mechanism to Support a High Level Language  (1980)
Doctoral advisor Thomas T. Chen [1]
Website divms.cs.uiowa.edu/~dwjones/
Writing career
Genre Science fiction
Notable works 1632 series short stories
Years active2005–2013 (Science Fiction)

Douglas W. Jones is an American computer scientist at the University of Iowa. His research focuses primarily on computer security, particularly electronic voting.

Jones received a B.S. in physics from Carnegie Mellon University in 1973, and a M.S. and Ph.D. in computer science from the University of Illinois at Urbana-Champaign in 1976 and 1980 respectively.

Jones' involvement with electronic voting research began in 1994, when he was appointed to the Iowa Board of Examiners for Voting Machines and Electronic Voting Systems. He chaired the board from 1999 to 2003, and has testified before the United States Commission on Civil Rights, [2] the United States House Committee on Science [3] and the Federal Election Commission [4] on voting issues. In 2005 he participated as an election observer for the presidential election in Kazakhstan. Jones was the technical advisor for HBO's documentary on electronic voting machine issues, "Hacking Democracy", that was released in 2006. [5] He was a member of the ACCURATE electronic voting project from 2005 to 2011. On December 11, 2009, the Election Assistance Commission appointed Douglas Jones to the Technical Guidelines Development Committee. [6]

Together with Barbara Simons, Jones has published a book on electronic voting entitled Broken Ballots: Will Your Vote Count?. [7] Jones's most widely cited work centers on the evaluation of priority queue implementations. [8] This work has been credited with helping relaunch the empirical study of algorithm performance. [9] In related work, Jones applied splay trees to data compression and developed algorithms for applying parallel computing to discrete event simulation. [10] [11] [12] Jones's PhD thesis was in the area of capability-based addressing, [1] and he has occasionally published on other aspects of computer architecture. [13] He has published work on computer architecture on an occasional basis, such as his proposal for a one-instruction set computer. [14]

Related Research Articles

Binary search tree Rooted binary tree data structure

In computer science, a binary search tree (BST), also called an ordered or sorted binary tree, is a rooted binary tree data structure with the key of each internal node being greater than all the keys in the respective node's left subtree and less than the ones in its right subtree. The time complexity of operations on the binary search tree is directly proportional to the height of the tree.

Heap (data structure) Computer science data structure

In computer science, a heap is a specialized tree-based data structure which is essentially an almost complete tree that satisfies the heap property: in a max heap, for any given node C, if P is a parent node of C, then the key of P is greater than or equal to the key of C. In a min heap, the key of P is less than or equal to the key of C. The node at the "top" of the heap is called the root node.

In computer science, a priority queue is an abstract data-type similar to a regular queue or stack data structure in which each element additionally has a "priority" associated with it. In a priority queue, an element with high priority is served before an element with low priority. In some implementations, if two elements have the same priority, they are served according to the order in which they were enqueued; in other implementations ordering of elements with the same priority remains undefined.

A splay tree is a binary search tree with the additional property that recently accessed elements are quick to access again. Like self-balancing binary search trees, a splay tree performs basic operations such as insertion, look-up and removal in O(log n) amortized time. For random access patterns drawn from a non-uniform random distribution, their amortized time can be faster than logarithmic, proportional to the entropy of the access pattern. For many patterns of non-random operations, also, splay trees can take better than logarithmic time, without requiring advance knowledge of the pattern. According to the unproven dynamic optimality conjecture, their performance on all access patterns is within a constant factor of the best possible performance that could be achieved by any other self-adjusting binary search tree, even one selected to fit that pattern. The splay tree was invented by Daniel Sleator and Robert Tarjan in 1985.

Dijkstras algorithm Graph search algorithm

Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later.

An abstract machine is a computer science theoretical model that allows for a detailed and precise analysis of how a computer system functions. It is analogous to a mathematical function in that it receives inputs and produces outputs based on predefined rules. Abstract machines vary from literal machines in that they are expected to perform correctly and independently of hardware. Abstract machines are “machines” because they allow step-by-step execution of programmes; they are “abstract” because they ignore many aspects of actual (hardware) machines. A typical abstract machine consists of a definition in terms of input, output, and the set of allowable operations used to turn the former into the latter. They can be used for purely theoretical reasons as well as models for real-world computer systems. In the theory of computation, abstract machines are often used in thought experiments regarding computability or to analyse the complexity of algorithms. This use of abstract machines is connected to the field of computational complexity theory, such as finite state machines, Mealy machines, push-down automata, and Turing machines.

In computer science, an algorithm is called non-blocking if failure or suspension of any thread cannot cause failure or suspension of another thread; for some operations, these algorithms provide a useful alternative to traditional blocking implementations. A non-blocking algorithm is lock-free if there is guaranteed system-wide progress, and wait-free if there is also guaranteed per-thread progress. "Non-blocking" was used as a synonym for "lock-free" in the literature until the introduction of obstruction-freedom in 2003.

Barbara Simons American computer scientist

Barbara Bluestein Simons is an American computer scientist and the former president of the Association for Computing Machinery (ACM). She is a Ph.D. graduate of the University of California, Berkeley and spent her early career working as an IBM researcher. She is the founder and former co-chair of USACM, the ACM U.S. Public Policy Council. Her main areas of research are compiler optimization, scheduling theory and algorithm analysis and design.

Scott J. Shenker is an American computer scientist, and professor of computer science at UC Berkeley. He is also the leader of the Extensible Internet Group at the International Computer Science Institute in Berkeley, California.

William F. (Bill) Opdyke is an American computer scientist, and enterprise architect at JPMorgan Chase, known for his early work on code refactoring.

A pairing heap is a type of heap data structure with relatively simple implementation and excellent practical amortized performance, introduced by Michael Fredman, Robert Sedgewick, Daniel Sleator, and Robert Tarjan in 1986. Pairing heaps are heap-ordered multiway tree structures, and can be considered simplified Fibonacci heaps. They are considered a "robust choice" for implementing such algorithms as Prim's MST algorithm, and support the following operations :

Goodyear MPP

The Goodyear Massively Parallel Processor (MPP) was a massively parallel processing supercomputer built by Goodyear Aerospace for the NASA Goddard Space Flight Center. It was designed to deliver enormous computational power at lower cost than other existing supercomputer architectures, by using thousands of simple processing elements, rather than one or a few highly complex CPUs. Development of the MPP began circa 1979; it was delivered in May 1983, and was in general use from 1985 until 1991.

A discrete-event simulation (DES) models the operation of a system as a (discrete) sequence of events in time. Each event occurs at a particular instant in time and marks a change of state in the system. Between consecutive events, no change in the system is assumed to occur; thus the simulation time can directly jump to the occurrence time of the next event, which is called next-event time progression.

Randal Bryant American computer scientist (born 1952)

Randal E. Bryant is an American computer scientist and academic noted for his research on formally verifying digital hardware and software. Bryant has been a faculty member at Carnegie Mellon University since 1984. He served as the Dean of the School of Computer Science (SCS) at Carnegie Mellon from 2004 to 2014. Dr. Bryant retired and became a Founders University Professor Emeritus on June 30th, 2020.

Kanianthra Mani Chandy is the Simon Ramo Professor of Computer Science at the California Institute of Technology (Caltech). He has been the Executive Officer of the Computer Science Department twice, and he has been a professor at Caltech since 1989. He also served as Chair of the Division of Engineering and Applied Science at the California Institute of Technology.

Informatics is the study of computational systems, especially those for data storage and retrieval. According to ACM Europe andInformatics Europe, informatics is synonymous with computer science and computing as a profession, in which the central notion is transformation of information. In other countries, the term "informatics" is used with a different meaning in the context of library science.

A distributed operating system is system software over a collection of independent software, networked, communicating, and physically separate computational nodes. They handle jobs which are serviced by multiple CPUs. Each individual node holds a specific software subset of the global aggregate operating system. Each subset is a composite of two distinct service provisioners. The first is a ubiquitous minimal kernel, or microkernel, that directly controls that node's hardware. Second is a higher-level collection of system management components that coordinate the node's individual and collaborative activities. These components abstract microkernel functions and support user applications.

In computer science, integer sorting is the algorithmic problem of sorting a collection of data values by integer keys. Algorithms designed for integer sorting may also often be applied to sorting problems in which the keys are floating point numbers, rational numbers, or text strings. The ability to perform integer arithmetic on the keys allows integer sorting algorithms to be faster than comparison sorting algorithms in many cases, depending on the details of which operations are allowed in the model of computing and how large the integers to be sorted are.

JFLAP

JFLAP is interactive educational software written in Java for experimenting with topics in the computer science area of formal languages and automata theory, primarily intended for use at the undergraduate level or as an advanced topic for high school. JFLAP allows one to create and simulate structures, such as programming a finite state machine, and experiment with proofs, such as converting a nondeterministic finite automaton (NFA) to a deterministic finite automaton (DFA).

Bucket queue Data structure for integer priorities

A bucket queue is a data structure that implements the priority queue abstract data type: it maintains a dynamic collection of elements with numerical priorities and allows quick access to the element with minimum priority. In the bucket queue, the priorities must be integers, and it is particularly suited to applications in which the priorities have a small range. A bucket queue has the form of an array of buckets: an array data structure, indexed by the priorities, whose cells contain collections of items with the same priority as each other. With this data structure, insertion of elements and changes of their priority take constant time. Searching for and removing the minimum-priority element takes time proportional to the number of buckets or, by maintaining a pointer to the most recently found bucket, in time proportional to the difference in priorities between successive operations.

References

  1. 1 2 Jones, Douglas Warren (1980). The systematic design of a protection mechanism to support a high level language (Ph.D.). University of Illinois at Urbana-Champaign. OCLC   741982997 via ProQuest.
  2. "Evaluating Voting Technology".
  3. "Problems with Voting Systems and the Applicable Standards".
  4. "Voting System Standards Work that Remains to be Done".
  5. "IMDb: Full cast and crew for Hacking Democracy". IMDb .
  6. United States Election Assistance Commission, New Technical and Scientific Experts Appointed to EAC’s Technical Guidelines Development Committee, Press Release Archived 2014-11-29 at the Wayback Machine , December 11, 2009.
  7. Douglas W. Jones and Barbara Simons, Broken Ballots, Center for the Study of Language and Information / University of Chicago Press, 2012.
  8. Jones, D. W. (April 1986). "An empirical comparison of priority-queue and event-set implementations". Comm. ACM . 29 (4): 300–311. doi:10.1145/5684.5686. S2CID   43650389.
  9. Bernard M. E. Moret, Towards a discipline of experimental algorithmics, Data Structures, Near Neighbor Searches, and Methodology: Fifth and Sixth DIMACS Implementation Challenges DIMACS Series on Discrete Mathematics 59, M.H. Goldwasser, et al, eds., 197-214; see section 3.1, page 202.
  10. D. W. Jones, Application of splay trees to data compression, Comm. ACM 31, 8 (August 1988), 996-1007.
  11. D. W. Jones, Concurrent simulation: an alternative to distributed simulation, Proc. WSC '86, 18th Winter Simulation Conf., 417-423.
  12. D. W. Jones, Concurrent operations on priority queues Comm. ACM 32 1 (January 1989) 132-137.
  13. D. W. Jones, Systematic Protection Mechanism Design, Systematic protection mechanism design. Proc. ASPLOS I, First International Symp. on Architectural Support for Prog. Languages and Op. Sys, 77–80.
  14. D. W. Jones, The ultimate RISC, SIGARCH Computer Architecture News 16 3 (June 1988) 48–55.