This free online computer science book, Introduction to Computer
Science (at Princeton University), is an interdisciplinary
approach that teaches all of the classic elements of
programming, using an "objects-in-the-middle" approach that emphasizes
data abstraction. The book focuses four
areas of computer science: programming, machine architecture, theory,
and systems.
The programming topics and concepts are presented by demonstrating
specific applications,
taken from fields ranging from materials science to genomics to
astrophysics
to internet commerce. Also available is the program code.
You can use this online book to learn or increase your programming
skills. Section 1.1
contains
detailed instructions for installing a Java programming environment
on your system.
Chapter 1:
Elements of Programming
introduces variables, assignment statements, built-in types of data,
conditionals and loops, arrays, and input/output, including graphics
and sound.
Chapter 2:
Functions
introduces
modular programming.
We stress the fundamental idea of dividing a program into components
that
can be independently debugged, maintained, and reused.
Chapter 3: Object
Oriented Programming
introduces data abstraction. We emphasize the concept of a
data type and its implementation using Java's class mechanism.
Chapter 4:
Algorithms and Data Structures
introduces classical algorithms for sorting and searching and
fundamental data structures, including stacks, queues, and symbol
tables.
Chapter 5: A
Computing Machine
introduces an imaginary machine that is similar to real computers.
We specify the machine in full detail and consider machine-language
programs.
Chapter 6: Circuits
introduces circuits and logical design, culminating in a description of
how a machine might be built from the ground up.
Chapter 7: Theory of
Computation
introduces the scientific discipline concerned with understanding
(efficient) computational phenomena, whether it be man-made,
in nature, or imaginary.
Chapter 8: Systems
introduces the basic components of computer systems that support
programming: compilers, operating systems, networks,
and application systems.
Chapter 9:
Scientific Computation
introduces some of the most important algorithms that play crucial
roles in
our computational infrastructure, including numerical integration,
matrix computation, data analysis, and Monte Carlo simulation.
Here are Lecture
Slides that accompany this Computer Science book.
A Computing Machine:
0
Prologue
LFSR
5.1 - 5.3
A von
Neumann Machine
Visual X-TOY
5.4 -
5.5
Machine
Language Programming
Crazy
8
Building a Computer:
6.1
Boolean
Logic and Gates
Hydraulic
computer
Sequential
Circuits
TOY Machine Architecture
Theory of Computation:
7.1 - 7.3 Regular
Expressions and DFAs DFA
7.4 - 7.6 Turing
Machines Turing
machine simulator
Adder
7.7
Intractability
7.8
Cryptography
Crypto
history
Systems:
8.4
Networking
Scientific Computing:
9.1
Floating
Point
9.8
Monte
Carlo Simulation
