💻

Overview of Computer Science Evolution

May 9, 2025

Notes on Computer Science Lecture

Introduction to Computers

  • Computers were initially built to expand human cognitive abilities.
  • Evolved from arithmetic solving to various applications: internet, graphics, simulations.
  • The core of computing relies on binary (0s and 1s).

Growth of Computing Power

  • Computing power has increased dramatically; modern smartphones have more processing power than all computers in the 1960s.
  • The Apollo moon landing could have been executed on a couple of Nintendo consoles.

Overview of Computer Science

  • Field Division:
    • Fundamental Theory of Computer Science
    • Computer Engineering
    • Applications of Computer Science

Theoretical Computer Science

  • Alan Turing:

    • Father of theoretical computer science; introduced the Turing machine concept.
    • Turing machines serve as a foundation for all computers.
    • Components of a Turing machine:
      • Infinitely long tape (working memory/RAM)
      • Head (CPU)
      • State register and instructions (computer memory)
  • Computability Theory:

    • Classifies problems into computable and non-computable.
    • Example: Halting problem (predicting program termination).
  • Computational Complexity:

    • Categorizes problems based on resource requirements (memory, time).
    • Some problems are theoretically solvable but impractical.
  • Algorithms:

    • Set of instructions to solve problems, akin to recipes.
    • Efficiency varies; studied in algorithmic complexity.
  • Information Theory:

    • Studies information properties, measurement, storage, and communication.
    • Applications include data compression and encryption (coding theory and cryptography).

Computer Engineering

  • Design Challenges:

    • Computers must solve diverse problems effectively.
    • CPUs manage multiple simultaneous tasks using a scheduler.
    • Multiprocessing and architecture considerations (CPUs, GPUs, FPGAs).
  • Programming Languages:

    • Vary from low-level (Assembly) to high-level (Python, JavaScript).
    • Languages must be human-friendly while being versatile enough for complex tasks.
  • Operating Systems:

    • Key software managing hardware and program execution.
    • Designing a robust operating system is challenging.

Software Engineering

  • Involves creating efficient, error-free software from creative ideas.
  • Important areas:
    • Communication between computers.
    • Data storage and retrieval.
    • System performance evaluation.
    • Graphics rendering.

Real-World Applications of Computer Science

  • Optimization Problems:

    • Essential in various industries; finding the best solutions can save money.
    • Related to boolean satisfiability (first NP complete problem).
  • Artificial Intelligence (AI):

    • Research focuses on enabling computers to learn and make decisions.
    • Machine Learning: Techniques for data-driven learning.
    • Computer Vision: Teaching computers to interpret and understand visual data.
    • Natural Language Processing: Processing human languages for analysis.
  • Big Data:

    • Management and analysis of large datasets.
    • Internet of Things (IoT) adds to data volume and complexity.
  • Computational Science:

    • Uses computing for scientific inquiries, often requiring supercomputing capabilities.
  • Human-Computer Interaction:

    • Focus on intuitive design for systems.
  • Robotics:

    • Physical embodiment of computing systems (e.g., Roomba).

Conclusion

  • Computer science continues to evolve rapidly, pushing the limits of technology.
  • Future developments may redefine the role of computers in society.

Additional Resources

  • For more learning, check out Brilliant.org, which offers courses on various computer science topics.