💻

Introduction to Computer Science Overview

May 9, 2025

Lecture Notes: Introduction to Computer Science

Overview of Computers

  • Computers were initially built to solve arithmetic problems.
  • They have evolved to perform a variety of tasks:
    • Running the internet
    • Graphics processing
    • Simulating complex systems like the universe
  • Fundamental operation of computers is based on flipping zeros and ones.
  • Modern smartphones have more computing power than the entire world in the 1960s.
  • Historical context: Apollo moon landing could be simulated on a few Nintendo consoles.

Key Areas in Computer Science

  1. Theoretical Computer Science

    • Alan Turing: Father of theoretical computer science.
    • Turing Machine: A fundamental model that describes a general-purpose computer.
      • Components include:
        • An infinitely long tape (akin to RAM)
        • A head for reading/writing symbols
        • A state register
        • A list of instructions (held in memory).
    • Lambda Calculus: Basis for programming language research.
    • Computability Theory: Classifies problems based on solvability.
      • Example: Halting problem – cannot predict if a program will stop.
    • Computational Complexity: Categorizes problems by how resource-intensive they are.
      • Some problems are theoretically solvable but impractical due to resource constraints.
    • Algorithms:
      • Defined as a set of instructions independent of hardware.
      • Efficiency varies between algorithms.
      • Studied in algorithmic complexity.
    • Information Theory: Studies properties of information.
      • Applications include data compression, coding theory, and cryptography.
  2. Computer Engineering

    • Focuses on designing computers that solve diverse problems efficiently.
    • CPU: Core of computer that handles tasks; uses scheduling to allocate resources effectively.
    • Computer Architecture: Different architectures serve various functions (CPUs, GPUs, FPGAs).
    • Programming Languages: Tools for human-computer interaction, ranging from low-level to high-level languages.
      • Compilers convert code into CPU instructions.
    • Operating Systems: Essential software controlling how programs interact with hardware.
  3. Software Engineering

    • The art of writing efficient, error-free software.
    • Considerations include problem-solving, data communication, performance measurement, and graphics.
    • Optimization Problems: Common in real-world applications; seek the best solutions within constraints.
    • Boolean Satisfiability: A foundational problem with implications in AI.

Real World Applications of Computer Science

  • Artificial Intelligence: Developing computers that can make decisions based on data.
    • Machine Learning: Algorithms enable learning from data.
    • Computer Vision: Making sense of images; involves image processing techniques.
    • Natural Language Processing: Understanding human language; uses knowledge representation.
  • Big Data: Managing and analyzing large datasets.
  • Internet of Things: Enhances data collection through everyday objects.
  • Computational Science: Uses computing to address scientific inquiries.
  • Human-Computer Interaction: Designing intuitive computer systems.
  • Robotics: Enabling physical manifestations of computer intelligence.

Future of Computer Science

  • Continued evolution in a field that remains dynamic despite hardware limitations.
  • Potential societal impacts over the next hundred years.

Additional Resources

  • For further learning, check out brilliant.org, which offers courses on computer science topics.