Essential Computer Science: A Programmer's Guide to Foundational Concepts


Price:
Sale price$44.99

Description

Chapter 1: Concept and Fundamentals of Computer System

In this chapter we discuss a brief history and evolution of a computer System, and fundamentals of how it operates.

1. Evolution of Computer System

2. Von Neumann Model/Architecture: I/O, CPU and memory

1. Fetch:

2. Decode,

3. Execute

3. Fetch: Address and Data

4. Decode: Instructions and Instruction Set Architecture:

1. Encode/Decode

1. Number Representation

2. Negative Numbers

3. Little Endian/Big Endian.

2. Instruction Format, Opcode, Operand

3. Addressing modes

4. ISA:

1. Categories: RISC, CISC etc.

2. Examples: x86, ARM etc.

5. Execute:

1. Fundamentals of Digital Logic

2. Examples: ADD, SUB.

6. Computer Hardware Advancements/Extensions:

1. Compute Block: Pipelining, and Predictive Execution and Data Hazards

2. Memory Hierarchy: Cache (inclusive, exclusive), Memory

3. Interrupt Based vs. Polling

1. Interrupt Service Routine

4. DMA

5. Multiprocessor: SIMD, MIMD, VLIW etc.

7. Basic Architecture of x86 based computer

1. Stack, PC, General Purpose Registers (GPRs) etc.

8. IO Devices- Interface and Controller Advancements, Example: PCIe, USB

1. Controller, Bus, and Device

9. Internal and External View of an Example Computer System Design

10. References and further reading:

1. Digital Logic and Computer Design: Morris Mano

2. Computer Organization and Design: The Hardware/Software Interface: Hennessy and Patterson

Chapter 2: Programming the Computer Hardware

In the preceding chapter we discussed the fundamentals about the computer hardware and architecture. Now having understood that, let's discuss how to program/instruct the hardware to do what we want/need.

1. What's programming?

2. Assembly and Machine language

3. Programming in High Level Language- why?

4. Programming Language Fundamentals:

1. Language Definition:

- Syntax

- High Level Constructs to Machine Level Mapping, example:

1. Variable definition to memory allocation

2. Assignment to mov

3. Operators to respective: ADD, SUB, MUL etc.

4. Conditional

Author: Paul D. Crutcher, Neeraj Kumar Singh, Peter Tiegs
Publisher: Apress
Published: 06/28/2021
Pages: 290
Binding Type: Paperback
Weight: 0.98lbs
Size: 9.21h x 6.14w x 0.66d
ISBN13: 9781484271063
ISBN10: 1484271068
BISAC Categories:
- Computers | Computer Science
- Computers | Programming | General

About the Author

Paul D. Crutcher is Senior Principal Engineer at Intel Corporation and manages the Platform Software Architecture team in the Client Computing Group. He has worked at Intel for more than 25 years and has also worked at two smaller software companies. Paul has a degree in computer science, with expertise spanning software development, architecture, integration, and validation based on systems engineering best practices in multiple areas. He holds several patents and has written multiple papers and presentations.

Neeraj Kumar Singh is a Principal Engineer at Intel with more than 15 years of system software and platform design experience. His areas of expertise are hardware software co-design, system/platform architecture, and system software design & development. Neeraj is the lead author of two other books: System on Chip Interfaces for Low Power Design and Industrial System Engineering for Drones: A Guide with Best Practices for Designing, in addition to many other papers and presentations.

Peter Tiegs is Principle Engineer at Intel with 20 years of software experience. Inside Intel he often consults on DevOps topics such as build automation and source code branching. Over the last decade Peter evangelized continuous integration and delivery as well as agile practices at Intel. He has written software at all levels of the stack from embedded C code to VUE.js. His programming language of choice is Python.