Computer Science

Reading material

  1. Computability theory https://en.m.wikipedia.org/wiki/Computability_theory
  2. Model of computation https://en.m.wikipedia.org/wiki/Model_of_computation
  3. Turing machine: https://en.m.wikipedia.org/wiki/Turing_machine
  4. Turing completeness https://en.m.wikipedia.org/wiki/Turing_completeness
  5. Open Source Society University https://github.com/ossu/computer-science
  6. Teach Yourself Computer Science https://teachyourselfcs.com/
  7. What kind of topics is taught in CS? https://www.reddit.com/r/computerscience/comments/1drd1nc/what_kind_of_topics_is_taught_in_cs/

Computer Science

Computer science encompasses a broad range of topics, from foundational theoretical concepts to practical applications in software and hardware. Key areas include algorithms and data structures, programming languages, computer architecture, operating systems, and artificial intelligence. Other important fields are software engineering, computer networks, databases, and human-computer interaction.

Theoretical Foundations:

Theory of Computation

Explores the limits of what computers can compute and the fundamental principles of computation.

Algorithms and Data Structures

Focuses on designing efficient methods for solving computational problems and organizing data.

  1. Analysis of Algorithms
  2. Divide, Conquer and Combine paradigm
  3. Dynamic Programming
    1. Maximum Subarray Problem
  4. Pathfinding Algorithms
  5. Searching algorithms
  6. Sorting algorithms

Programming Languages

Deals with the design, implementation, and analysis of programming languages, including their syntax, semantics, and paradigms.

  1. Programming Languages
    1. Programming Paradigms
    2. Compiled, Interpreted and Hybrid (Portable Compiled) Programming Languages
    3. Programming Languages - Speed of development and Speed of execution
    4. Static vs Dynamic Programming Languages
    5. Java notes
      1. Java vs C++
    6. Rust - notes
    7. GoLang notes
      1. Hard truths before switching to Go
    8. Haskell - notes
    9. Javascript and Typescript notes
      1. The Case Against JavaScript
    10. Python notes
      1. Python and C++
      2. NumPy: Supercharging Python for Scientific and Numerical Computing
    11. No Silver Bullets
  2. Rosetta Code
    1. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another.
    2. https://rosettacode.org/wiki/Rosetta_Code

Formal Languages and Automata Theory

Studies formal languages, their properties, and abstract machines that recognize them.

Information and Coding Theory

Focuses on the mathematical theory of information and methods for efficient and reliable data transmission and storage.

Practical Applications

Computer Architecture

Examines the structure and organization of computer systems, including hardware components and their interaction.

Operating Systems

Deals with the software that manages a computer’s resources and provides services to applications.

Memory management

Storage management

Computer Networking and Cyber Security

Databases

Focuses on the design, management, and use of databases for storing and retrieving information.

  1. Databases
    1. Data Engineering
    2. Data Engineering vs Data Science
    3. Big Data Processing Frameworks
    4. How databases store passwords securely
    5. Data Science

Software Engineering

Covers the principles and practices of developing large and complex software systems.

Software Engineering

Artificial Intelligence

Explores the development of intelligent agents that can perform tasks that typically require human intelligence.

Artificial intelligence (AI) and machine learning (ML)

Concurrency Control

Human-Computer Interaction

Focuses on the design, evaluation, and implementation of user interfaces and the interaction between humans and computers.

Computer Graphics

Deals with the creation, manipulation, and display of images using computers.

Parallel and Distributed Computing

Explores the design and implementation of systems that can perform computations using multiple processors or computers.

Security and Information Assurance

Focuses on protecting computer systems and data from unauthorized access, use, disclosure, disruption, modification, or destruction.

  1. Keyrings

Machine Learning

A subfield of AI that focuses on enabling systems to learn from data without being explicitly programmed.

Artificial intelligence (AI) and machine learning (ML)

Data Science

A multidisciplinary field that uses scientific methods, processes, algorithms, and systems to extract knowledge and insights from structured and unstructured data.

Big Data Analytics

Focuses on analyzing large and complex datasets to discover patterns, trends, and other useful information.

Internet of Things (IoT)

Deals with the network of physical devices, vehicles, home appliances, and other items embedded with electronics, software, sensors, actuators, and connectivity which enables these things to connect and exchange data.

Cloud Computing

The delivery of computing services—including servers, storage, databases, networking, software, analytics, and intelligence—over the Internet (“the cloud”) to offer faster innovation, flexible resources, and economies of scale according to IBM.

  1. Cloud computing
  2. Edge Computing

Quantum Computing


No notes link to this note