15.08.2013 Views

General Computer Science 320201 GenCS I & II Lecture ... - Kwarc

General Computer Science 320201 GenCS I & II Lecture ... - Kwarc

General Computer Science 320201 GenCS I & II Lecture ... - Kwarc

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Chapter 3<br />

How to build <strong>Computer</strong>s and the<br />

Internet (in principle)<br />

In this chapter, we will learn how to build computational devices (aka. computers) from elementary<br />

parts (combinational, arithmetic, and sequential circuits), how to program them with low-level<br />

programming languages, and how to interpret/compile higher-level programming languages for<br />

these devices. Then we will understand how computers can be networked into the distributed<br />

computation system we came to call the Internet and the information system of the world-wide<br />

web.<br />

In all of these investigations, we will only be interested on how the underlying devices, algorithms<br />

and representations work in principle, clarifying the concepts and complexities involved,<br />

while abstracting from much of the engineering particulars of modern microprocessors. In keeping<br />

with this, we will conclude this chapterby an investigation into the fundamental properties and<br />

limitations of computation.<br />

3.1 Combinational Circuits<br />

We will now study a new model of computation that comes quite close to the circuits that execute<br />

computation on today’s computers. Since the course studies computation in the context<br />

of computer science, we will abstract away from all physical issues of circuits, in particular the<br />

construction of gats and timing issues. This allows to us to present a very mathematical view<br />

of circuits at the level of annotated graphs and concentrate on qualitative complexity of circuits.<br />

Some of the material in this section is inspired by [KP95].<br />

We start out our foray into circuits by laying the mathematical foundations of graphs and trees<br />

in Subsection 3.1.0, and then build a simple theory of combinational circuits in Subsection 3.1.1<br />

and study their time and space complexity in Subsection 3.1.2. We introduce combinational<br />

circuits for computing with numbers, by introducing positional number systems and addition in<br />

Subsection 3.2.0 and covering 2s-complement numbers and subtraction in Subsection 3.2.1. A<br />

basic introduction to sequential logic circuits and memory elements in Section 3.2 concludes our<br />

study of circuits.<br />

3.1.1 Graphs and Trees<br />

Some more Discrete Math: Graphs and Trees<br />

Remember our Maze Example from the Intro? (long time ago)<br />

115

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!