Rethinking Computer Science

A series of essays on computer science.

Rethinking Computer Science Part 7: A Language of Computation

A single coherent language that encompasses the expression of computation from high level abstract design through automatic elaboration to the ultimate netlist of primitive behaviors that enlivens the design. A language that characterizes computation as association relations among differentnesses, as patterns of changing differentness relative to structures of persistent differentness as “all of” relations and “one of” relations forming spontaneously behaving, self regulating networks of interacting differentness. (more…)

Leave a Reply

Rethinking Computer Science Part 6: Across the Spectrum

A given computation can be expressed many ways across the spectrum. An example computation presented as a mapping in Table 1, is expressed at various places along the spectrum. (more…)

Leave a Reply

Rethinking Computer Science Part 5: The Provenance of Computation

What is the most primitive provenance of computation and how does it extend to the complexities of life and mathematics? (more…)

Leave a Reply

Rethinking Computer Science Part 4: A Network Interpreter

Can there exist an approach to universal interpretability that relates directly to the dependency network and which preserves its distributed concurrency? (more…)

2 thoughts on “Rethinking Computer Science Part 4: A Network Interpreter

  1. Could you please help me understand your ideas with an example. What would a concrete record look like and what would a flow network for a simple problem look like?

    1. Hi Nicolas

      There have not been any records actually created yet and I don’t have an architecture emulator yet. The circuit examples in the sandbox are networks of oscillations and can serve as first order examples that could be interpreted by the architecture. A record is the sequential program for the logic of the oscillation, pointers to records in neighboring memories and the empty/full flags associated with each pointer. It will be some time before an architecture emulator is available. Perhaps you could help if you are so inclined.

Leave a Reply

Rethinking Computer Science Part 3: A Sequential Interpreter.

Part 3 presents the logical structures of a memory, a configurable oscillation and a sequential interpreter ring forming a traditional universal sequential processor. (more…)

Leave a Reply

Rethinking Computer Science Part 2: A Sufficiently Expressive Logic

Part 2 presents a logical foundation for computation that does not exhibit the difficulties discussed in part 1. (more…)

6 thoughts on “Rethinking Computer Science Part 2: A Sufficiently Expressive Logic

  1. Very interesting ideas. The concepts remind me of artificial neural networks with a threshold function. Am I mistaking or are they related to the diagrams shown above?
    Also, how would one program such circuits in software, as there are no registers to save intermediate values it seems to me that it would be necessary to build the complete flow graph in hardware with an FPGA or similar.

    1. Yes. I think they will ultimately relate closely to real neural networks. I am not sure what the diagrams shown above are referring to.

      The links serve as temporary storage of intermediate values as wavefronts of data flow through the graph. In a sequential simulation wavefronts can’t flow directly but have to wait their turn in the sequence. Traditional central memory is essentially stopping wavefronts and storing them until their turn in the sequence comes up. So a flow graph can be directly mapped into sequence and central memory and sequentially simulated. I will touch on this in part3 and in part 4 will present a general flow graph interpreter.

  2. Thank You. I have been working through some NCL designs from various papers. The problem I’ve run into is that a lot of them focus on implementation (optimization or gate design). This is a helpful theoretical background.

    1. Yes. The asynchronous community is mostly EEs focused on circuits and not sensitive to theoretical concerns. While NCL is a generally accepted method of asynchronous design its theoretical foundations and place in broader considerations of computation and computer science have not been appreciated. This blog is an effort to communicate more effectively with a wider audience.

  3. This is a pretty interesting idea. But what I concern is how to implement these truth tables, these user defined primitives in the real FPGA design. Even this idea is indeed interesting, but these truth tables are non-synthesizable in FPGA. I have tried your example NCL logic example code such as pipeline and so on, they worked in simulation but did not work in Vivado or Quartus II. So how to implement NCL logic in a real synthesizable compilable FPGA design?


Leave a Reply

Rethinking Computer Science Part 1: The Problem

Computer science is formulated with concepts borrowed from mathematics. Even though mathematics defines mathematical computation and computer science is about computation, it is argued here that there are fundamental differences between the two, that computer science is not well served by the borrowed concepts and that there exists a conceptual grounding that more effectually addresses the goals and problems of computer science. (more…)

Leave a Reply