Detailed Study Notes on Computer Science Fundamentals

CHAPTER ONE: INTRODUCTION AND HISTORY OF COMPUTERS

1.0 INTRODUCTION

  • Computers are complex technological items that serve as useful tools in daily life.
  • Definition of a Computer:
    • A computer is an electronic device that accepts data in one form and processes it to produce data in another form.
    • More explicitly, a computer can be defined as a device that receives a set of instructions (program) and carries out this program by performing calculations on numerical data or compiling other forms of information.
    • The definition emphasizes three key terms: data, program, and information:
    • Data: Basic facts (e.g., number of items sold, customer names, numerical values in mathematical formulas).
    • Program: A set of instructions written in the language of the computer for specific tasks (e.g., calculating interest or producing payroll).
    • Information: The result of processed data, made more useful/intelligible.
  • A computer can also be formally defined as a device that works under the control of a stored program, automatically accepting and processing data to produce information.
  • Computer science applies scientific principles to the design, construction, and maintenance of systems that use computers. It encompasses the study of what computers are, how they work, and their applications.

1.2 THE EVOLUTION OF COMPUTER SYSTEMS

  • Most modern computers are based on design principles established in the 1940s, even though technology has significantly changed how computers are made.
1.2.1 The Development of Calculating Devices
  • Simple calculating devices, such as the abacus, have been in use for over two thousand years.
  • The abacus is a mechanized pebble counter with beads on wires that can slide for calculations.
  • Significant developments in calculating devices occurred in the 17th century:
    • Logarithms (1614) by John Napier facilitated manual multiplication and division.
    • Napier’s bones (1617) for multiplication aids were rods carved from bone.
    • Slide Rule (1620) by William Oughtred used fixed and sliding scales.
    • Binary Codes (1623) by Francis Bacon were the first recorded use for number representation.
    • First True Calculating Machine:
    • Created in 1642 by Blaise Pascal, it featured ten-toothed wheels to add digits.
    • Its complexities made multiplication/division slow, and recognition of Pascal's work led to the naming of a programming language after him by Niklaus Wirth in the 1960s.
    • Calculating Machine (1671) by Gottfried von Leibniz enhanced Pascal's concept, introducing true multiplication and division with a new mechanism.
  • Between 1802 and 1804, Joseph Marie Jacquard perfected a loom using punched cards to automatically control weaving patterns, laying groundwork for future automation in computing and calculations.
  • Charles Babbage introduced the Difference Engine in 1822 and the Analytic Engine in 1884, incorporating features similar to modern computers:
    • Input through punched cards
    • Storage facilities for data and instructions
    • Mechanized unit for calculation
    • Output device for results
  • Lady Ada Lovelace was an associate of Babbage and is recognized as the first programmer, creating programs for the Analytic Engine.
  • Boolean Algebra was developed by George Boole between 1847 and 1854, which provided a crucial theoretical framework for computers.
  • Herman Hollerith's invention in the late 1880s, using punched cards in tabulators, sped up the U.S. Census dramatically.
1.2.2 Early Computers with Changing Technology
  • Analog computers emerged in the early 20th century, employing mechanical and electrical systems for calculations.
  • During severe wars, these systems found applications in military technology.
  • The first digital computer, built in the 1940s by Howard Aiken, utilized mechanical adding machine components and paper tape for input.
  • The installation of internal program storage was developed by John von Neumann, finalizing components into the Architecture of a computer composed of:
    1) Input Unit
    2) Output Unit
    3) Memory
    4) Arithmetic Logic Unit
    5) Control Unit
  • The “first generation” computers were valve-based, built on von Neumann principles.
1.2.3 Electronic Computers
  • The introduction of the transistor in 1948 led to significant advancements in computer technology, resulting in faster and more efficient machines.
  • ENIAC was built in 1946, representing the first all-electronic computer containing 18,000 vacuum tubes.
  • Second generation computers emerged with the use of transistors, increasing power and reducing costs.
  • Shift toward modular construction provided consumer customization and accessibility.
1.2.4 Circuit Integration
  • The 1960s brought Integrated Circuits (ICs), leading to the third generation of computers featuring increased performance and reliability.
  • The microprocessor revolution occurred in the mid-1970s, introducing personal computers, i.e., the Altair (1974) followed by the IBM PC and Apple Macintosh.

1.3 COMPUTER GENERATIONS

1.3.1 First Generation (1945-1956)
  • Early computers used vacuum tubes; the Mark I represented early advancements in relay-based computation.
  • Military contributions during WWII expedited technological developments, leading to the ENIAC, acknowledged as one of the first general-purpose digital computers.
  • The UNIVAC I became notable for predicting the 1952 presidential election.
1.3.2 Second Generation (1956-1963)
  • The transistor ushered a substantial reduction in computer size and power consumption.
  • This era also saw software advancements, allowing stored program flexibility.
1.3.3 Third Generation (1964-1971)
  • The integrated circuit revolutionized the technology again, allowing smaller chips with more components.
  • Operating systems emerged, facilitating complex applications.
1.3.4 Fourth Generation (1971-Present)
  • Large-scale integration allowed the inclusion of millions of transistors on a single chip, leading to miniaturization and efficiency.
  • Personal computing became mainstream enabling software development for individual users.

1.3.5 Fifth Generation (Present and Beyond)

  • This generation focuses on artificial intelligence, with an evolving architecture diverging notably from classical designs.
  • Computing capabilities have reached toward supercomputing, enhancing processing power.

CHAPTER TWO: COMPUTER COMPONENTS

2.1 HARDWARE

  • Hardware includes all physical components such as memory, CPU, and I/O devices.
2.1.1 Input Devices
  • Various input devices include:
    • Keyboard: Used for manual data input.
    • Mouse: Manipulates cursor movement; translates physical movements into commands.
    • Additional devices include Scanner, MICR, OMR, OCR, and sound input units.
2.1.2 Memory Unit
  • Main storage serves as the immediate access storage.
  • Distinction between RAM (volatile) and ROM (non-volatile) which retain information post power loss.
  • Characteristics of memory such as Random Access and access methods (i.e., serial vs random access) are critical in accessing data efficiently.
2.1.3 CENTRAL PROCESSING UNIT
  • The heart of the computer system that interprets instructions and executes input commands.
  • Major components include the Control Unit (CU), Arithmetic Logic Unit (ALU), and Registers. The CPU executes sequences and transference of information.
2.1.4 Output Devices
  • Output devices like printers and VDUs convert processed data into human-readable forms. Variants include Dot Matrix, Ink Jet, and Laser Printers.
2.1.5 Secondary (Auxiliary) Storage Devices
  • Serve the purpose of mass data storage with media ranging from magnetic disks, tapes, to optical disks.

CHAPTER THREE: TYPES OF COMPUTERS

3.1 MAIN TYPES

  • Majorly categorized into Analog, Digital, and Hybrid computers:
    • Analog computers process physical measurements (e.g., voltages);
    • Digital computers perform calculations digit by digit (using binary).
    • Hybrid computers employ both types in processes.
3.1.1 Analog Computers
  • These perform calculations using continuous values, often visualized through graphical means.
3.1.2 Digital Computers
  • Executing operations by recognizing binary states; characterized by high computational speeds measured in MHz and GHz.

3.2 CLASSIFICATION BY SIZE AND POWER

  • Supercomputers: High-speed computers for large computations in scientific disciplines.
  • Mainframes: Large, general-purpose computers serving multiple users simultaneously.
  • Minicomputers: Smaller than mainframes, suiting individual tasks.
  • Microcomputers: Targeted for personal use, utilizing a single chip.

CHAPTER FOUR: COMPUTER SOFTWARE AND DATA

4.1 SOFTWARE

  • Software encompasses all programs that perform operations on data, split into System Software and Application Software.
4.1.1 System Software
  • Controls computer operations via Operating Systems (e.g., Windows, Unix).
4.1.2 Application Software
  • Tailored for specific tasks (like word processing or database management).

4.2 OPERATIONS ON DATA

  • Involves algorithms and programming procedures for data processing:
    • Data Types: Includes numeric, character, Boolean types among others.
    • Arithmetic and Logic Operations: Based on computational expressions using operators such as +, -, /, and functions like Abs, Sqrt.

CHAPTER FIVE: APPLICATION AREAS

5.1 REASONS FOR USING COMPUTER

  • Characteristics concerning memory, speed, reliability, and versatility drive utility in solving diverse problems.

5.2 MAIN AREAS OF APPLICATION

Commercial Applications
  • Routine tasks including payroll, accounting, financial modeling, management analysis.
Scientific And Research Applications
  • Dense computations in physics, chemistry, engineering, including CAD systems.
Government Applications
  • Keeping public records efficiently across agencies.

CHAPTER SIX: NUMBER SYSTEMS AND COMPUTER ARITHMETICAL PROCEDURE

6.1 NUMBER SYSTEM

  • Explains binary, octal, decimal, and hexadecimal systems for data representation.
  • Conversions among these systems involve specific algorithms outlined in detail.

6.1.2 Complements

  • Discusses radix complements for representing negative numbers in computing.

6.1.3 Binary Representations of Negative Numbers

  • Utilizes the sign bit to denote value signs in binary systems.

CHAPTER SEVEN: DATA STRUCTURES

7.1 DATA STRUCTURE DEFINED

  • Defines data structures as organized collections enabling systematic access.
Arrays
  • Illustrates storing data under indexed arrangement for easy retrieval.
Strings
  • Represents sequences of characters fundamental in text processing.
Records
  • Comprise varied data types as fields linking data items logically.
Lists and Trees
  • Emphasizes dynamic structures facilitating extensive manipulation and representation.

CHAPTER EIGHT: FLOWCHARTS AND BASIC STRUCTURES

8.1 FLOWCHART SYMBOLS

  • Provides understanding of symbols used in programming tasks for visual mapping.

CHAPTER NINE: BASIC AS A PROGRAMMING LANGUAGE

9.1 BASIC

  • Overview of BASIC, its syntax, semantics, and use cases.