Skip to content

Latest commit

 

History

History
694 lines (642 loc) · 56.3 KB

File metadata and controls

694 lines (642 loc) · 56.3 KB

Intro to Computer Science

[TOC]

Res

Related Topics

🤯 Awesome ListComputer (Host) System

🌲 Road To CS一个仅供参考的CS学习规划

Universe, Self-Awareness, and Intelligence

History of ComputingWorld's Science & Technology HistoryNews Focus (IT-exclusive)

Courses

UC Berkeley CS61

CMU Intro to Computer Science

NJU/计算机系统基础Harvard/CS50x

🎬 Crash Course Computer Science

https://space.bilibili.com/392208938/channel/collectiondetail?sid=3139667&spm_id_from=333.788.0.0 合集·直观理解计算机技术

Other Resources

📖 New Perspectives Computer Concepts Comprehensive, June Jamrich Parsons 🔗 https://www.amazon.com/Perspectives-Computer-Concepts-Comprehensive-MindTap/dp/0357674618

  • Digital Content
  • Digital Devices
  • Networks
  • The Web
  • Social Media
  • Software
  • Digital Security
  • The ICT Industry
  • Information Systems
  • Databases
  • Programming
  • Coding with Python

🐕 Computer Science Introduction & Overview

Why is CS needed?

💡 This section only stands for personal views.

TL;DR

  • The universe is made of objects /maters. According to different frames of references, objects can be still or in movement.
    • The movement of objects leads to energy.
  • One unique existence in the universe: objects that has self-consciousness. The universe thus is divided into objects with self-consciousness and objects without self-consciousness.
  • Objects with self-consciousness (humans) exists in the way of information.
    • Knowledge is connected information. Language or symbolic system is the media of information.
    • The computation of information and the engineering to the universe compromise the intelligence of self-consciousness, i.e. human intelligence. Human intelligence demonstrates itself in two dimension: logic ability and sentimental ability.
  • The universe is thus compromised of three elements: objects /maters, energy, and information.
  • The automation of computation of information gives rise to the study of computer science.
    • The ultimate goal of computer science is to reach to the extreme of computational power, i.e. the ability like human intelligence or beyond that in regard of the computation of information.
    • Strong computational power don't make human-like intelligence, the combination of computational power and engineering ability makes human-like intelligence, or even human ourselves. However, a more widely-accepted version of such intelligence, artificial intelligence, aims to only reach the maximal power of computational ability, ignoring the engineering part.

Human_and_knowledge.excalidraw | 800 The relationship of language, information/data, computation, and automation.

Universe_and_CS.excalidraw | 800 From CS to AGI: Computing and Intelligence

Universe, Self-Awareness, and Intelligence

What is CS?

[!links] ↗ 🌲 Road To CS /CS & IT in Difference AspectsThe Essence of Computing - Programs & The Semantics of Programs

🔗 https://en.wikipedia.org/wiki/Computer_science#Fields 🔗 https://en.wikipedia.org/wiki/Outline_of_computer_science

Computer science is the study of information, computation, and automation.

Computer science spans theoretical disciplines (such as algorithms, theory of computation, and information theory) to applied disciplines (including the design and implementation of hardware and software). 

What can computers do?

A Deeper Thinking of Computation

computing.excalidraw | 800Universe, Self-Awareness, and IntelligenceInformation Theory

The Essence of Computing - Programs & The Semantics of Programs

Computing Methodologies

The Domain Knowledge of CS

[!links] ↗ 🌲 Road To CSAcademics 🎓 (In CS)

computer_architecture.excalidraw | 800 Computer System & Computer Science Overview

web_and_Internet_arch.excalidraw | 800 Computer Networks & Supplements to the Computer Science Overview

Language_and_Programming_Language_Processing | 800 Language, Computer Language, and Programming Language Processing

application_execution_and_computer_data_flow.excalidraw | 800 Computer Program Execution Procedure: Top-down Review

https://en.wikipedia.org/wiki/Computer_science#External_links

TL;DR (personal opinion) In general, the domain of computer science includes 3 major areas:

  • ==Theoretical & Formal Computer Science== (theories and math)
    • Theory of Computation
    • Algorithms and Data Structures
    • *Programming Methodology and Languages (Stride from theory to engineering)
    • etc.
  • ==Computer Elements and Architecture== (studies about computer itself)
    • Computer Host
      • Computer Hardware and Engineering
        • Computer Organization and Architecture
        • etc.
      • Computer Software and Engineering
        • *System Level Software and Engineering (Stride from hardware to software)
          • Operating System
          • Database System
          • Drivers
          • Compilers
          • etc.
        • Application Level Software and Engineering
          • Web Application
          • etc.
    • Computer Networking
      • Hardware
      • Software
      • Protocols
  • ==Computer Application & Applied Computing== (studies about using computer)
    • *Computer Security (Stride from computer elements & arch to applied computing)
      • etc.
    • Computing Methodologies
      • AI & Data Science
      • High Performance Computing
      • Quantum Computing
      • etc.
    • Human-Centered Computing
    • etc.
CSAB Classification

🔗 https://en.wikipedia.org/wiki/Computer_science#Fields 🔗 https://en.wikipedia.org/wiki/Outline_of_computer_science

As a discipline, computer science spans a range of topics from theoretical studies of algorithms and the limits of computation to the practical issues of implementing computing systems in hardware and software. CSAB, formerly called Computing Sciences Accreditation Board — which is made up of representatives of the Association for Computing Machinery (ACM), and the IEEE Computer Society (IEEE CS) — identifies four areas that it considers crucial to the discipline of computer science: theory of computationalgorithms and data structuresprogramming methodology and languages, and computer elements and architecture. In addition to these four areas, CSAB also identifies fields such as software engineering, artificial intelligence, computer networking and communication, database systems, parallel computation, distributed computation, human–computer interaction, computer graphics, operating systems, and numerical and symbolic computation as being important areas of computer science.

ACM CCS (Classification of All CS Subjects)

https://en.wikipedia.org/wiki/ACM_Computing_Classification_System The ACM Computing Classification System (CCS) is a subject classification system for computing devised by the Association for Computing Machinery (ACM). The system is comparable to the Mathematics Subject Classification (MSC) in scope, aims, and structure, being used by the various ACM journals to organize subjects by area.

https://dl.acm.org/ccs The 2012 ACM Computing Classification System (CCS 2012) has been developed as a poly-hierarchical ontology that can be utilized in semantic web applications. It replaces the traditional 1998 version of the ACM Computing Classification System (CCS), which has served as the de facto standard classification system for the computing field. It is being integrated into the search capabilities and visual topic displays of the Digital Library. It relies on a semantic vocabulary as the single source of categories and concepts that reflect the state of the art of the computing discipline and is receptive to structural change as it evolves in the future. ACM provides 🔍 a tool within the visual display format to facilitate the application of CCS categories to forthcoming papers and a process to ensure that the CCS stays current and relevant. The CCS visual display has both Interactive and Flat views of the classification tree. You may also opt to download the CCS SKOS file. The new classification system will play a key role in the development of a people search interface in the ACM Digital Library to supplement its current traditional bibliographic search.

  • Hardware
    • Printed circuit boards
    • Communication hardware, interfaces and storage
    • Integrated circuits
    • Very large scale integration design
    • Power and energy
    • Electronic design automation
    • Hardware validation
    • Hardware test
    • Robustness
    • Emerging technologies
  • Software and its Engineering
    • Software organization and properties
      • Contextual software domains
        • E-commerce infrastructure
        • Software infrastructure
        • Operating systems
        • Virtual worlds software
      • Software system structures
        • Embedded software
        • Software architectures
        • Software system models
        • Ultra-large-scale systems
        • Distributed systems organizing principles
        • Real-time systems software
        • Abstraction, modeling and modularity
      • Software functional properties
        • Correctness
        • Formal methods
      • Extra-functional properties
        • Interoperability
        • Software performance
        • Software reliability
        • Software fault tolerance
        • Software safety
        • Software usability
    • Software notations and tools
      • General programming languages
        • Language types
        • Language features
      • Formal language definitions
        • Syntax
        • Semantics
      • Compilers
        • Interpreters
        • Incremental compilers
        • Retargetable compilers
        • Just-in-time compilers
        • Dynamic compilers
        • Translator writing systems and compiler generators
        • Source code generation
        • Runtime environments
        • Preprocessors
        • Parsers
      • Context specific languages
        • Markup languages
        • Scripting languages
        • Domain specific languages
        • Specialized application languages
        • API languages
        • Graphical user interface languages
        • Window managers
        • Command and control languages
        • Macro languages
        • Programming by example
        • State based definitions
        • Visual languages
        • Interface definition languages
      • System description languages
        • Design languages
        • Unified Modeling Language (UML)
        • Architecture description languages
        • System modeling languages
        • Orchestration languages
        • Integration frameworks
        • Specification languages
      • Development frameworks and environments
        • Object oriented frameworks
        • Software as a service orchestration system
        • Integrated and visual development environments
        • Application specific development environments
      • Software configuration management and version control systems
      • Software libraries and repositories
      • Software maintenance tools
    • Software creation and management
      • Designing software
        • Requirements analysis
        • Software design engineering
        • Software design tradeoffs
        • Software implementation planning
      • Software development process management
        • Software development methods
        • Risk management
      • Software development techniques
        • Software prototyping
        • Object oriented development
        • Flowcharts
        • Reusability
        • Error handling and recovery
        • Automatic programming
      • Software verification and validation
        • Software prototyping
        • Operational analysis
        • Software defect analysis
        • Fault tree analysis
        • Process validation
        • Formal software verification
        • Empirical software validation
      • Software post-development issues
        • Software reverse engineering
        • Documentation
        • Backup procedures
        • Software evolution
        • Software version control
        • Maintaining software
        • System administration
      • Collaboration in software development
        • Open source model
        • Programming teams
      • Search-based software engineering
  • Computer Systems Organization
    • Architectures
    • Embedded and cyber-physical systems
    • Real-time systems
    • Dependable and fault-tolerant systems and networks
  • Networks
    • Network architectures
    • Network protocols
    • Network components
    • Network algorithms
    • Network performance evaluation
    • Network properties
    • Network services
    • Network types
  • Theory of Computation
    • Models of computation
    • Formal languages and automata theory
    • Computational complexity and cryptography
    • Logic
    • Design and analysis of algorithms
    • Randomness, geometry and discrete structures
    • Theory and algorithms for application domains
    • Semantics and reasoning
  • Mathematics of Computing
    • Discrete mathematics
    • Probability and statistics
    • Mathematical software
    • Information theory
    • Mathematical analysis
    • Continuous mathematics
  • Computing Methodologies
    • Symbolic and algebraic manipulation
    • Parallel computing methodologies
    • Artificial intelligence
    • Machine learning
    • Modeling and simulation
    • Computer graphics
    • Distributed computing methodologies
    • Concurrent computing methodologies
  • Information Systems
    • Data management systems
    • Information storage systems
    • Information systems applications
    • World Wide Web
    • Information retrieval
  • Security and privacy
    • Cryptography
      • Key management
      • Public key (asymmetric) techniques
        • Digital signatures
        • Public key encryption
      • Symmetric cryptography and hash functions
        • Block and stream ciphers
        • Hash functions and message authentication codes
      • Cryptanalysis and other attacks
      • Information-theoretic techniques
      • Mathematical foundations of cryptography
    • Formal methods and theory of security
      • Trust frameworks
      • Security requirements
      • Formal security models
      • Logic and verification
    • Security services
      • Authentication
        • Biometrics
        • Graphical / visual passwords
        • Multi-factor authentication
      • Access control
      • Pseudonymity, anonymity and untraceability
      • Privacy-preserving protocols
      • Digital rights management
      • Authorization
    • Intrusion/anomaly detection and malware mitigation
      • Malware and its mitigation
      • Intrusion detection systems
        • Artificial immune systems
      • Social engineering attacks
        • Spoofing attacks
        • Phishing
    • Security in hardware
      • Tamper-proof and tamper-resistant designs
      • Embedded systems security
      • Hardware security implementation
        • Hardware-based security protocols
      • Hardware attacks and countermeasures
        • Malicious design modifications
        • Side-channel analysis and countermeasures
      • Hardware reverse engineering
    • Systems security
      • Operating systems security
        • Mobile platform security
        • Trusted computing
        • Virtualization and security
      • Browser security
      • Distributed systems security
      • Information flow control
      • Denial-of-service attacks
      • Firewalls
      • Vulnerability management
        • Penetration testing
        • Vulnerability scanners
      • File system security
    • Network security
      • Security protocols
      • Web protocol security
      • Mobile and wireless security
      • Denial-of-service attacks
      • Firewalls
    • Database and storage security
      • Data anonymization and sanitization
      • Management and querying of encrypted data
      • Information accountability and usage control
      • Database activity monitoring
    • Software and application security
      • Software security engineering
      • Web application security
      • Social network security and privacy
      • Domain-specific security and privacy architectures
      • Software reverse engineering
    • Human and societal aspects of security and privacy
      • Economics of security and privacy
      • Social aspects of security and privacy
      • Privacy protections
      • Usability in security and privacy
  • Human-Centered Computing
    • Human computer interaction (HCI)
    • Interaction design
    • Collaborative and social computing
    • Ubiquitous and mobile computing
    • Visualization
    • Accessibility
  • Applied Computing
    • Electronic commerce
    • Enterprise computing
    • Physical sciences and engineering
    • Life and medical sciences
    • Law, social and behavioral sciences
    • Computer forensics
    • Arts and humanities
    • Computers in other domains
    • Operations research
    • Education
    • Document management and text processing
  • Social and Professional Topics
    • Professional topics
    • Computing / technology policy
    • User characteristics

How to learn CS ?

A Beginner-Friendly Learning Path

🌲 Road To CS🌲 Road To CS /2️⃣ CS Specific Fields / CS Applications

🤔 Questions Leading my CS Study

[!links] ↗ 🌲 Road To CS /🚀 A Serious CS RoadmapImportance Themes & Ideology in CS

These questions, from general to specific, track my path in learning CS. The links given are not exhaustive, as there are too many directions to extend from (the ones i list here are only for inspirations). However, in my best efforts, the questions themselves are trying to cover all aspects in CS, threading them into a main logic from philosophy, theory, system, to application.

Philosophical Part

  1. What is the Universe?
    1. Universe, Self-Awareness, and Intelligence
    2. What is the life?(什么是生命?)
    3. What is the intelligence? What is Human Beings? (什么是智能(从低级到高级)?人类就是目前唯一已知的高级智能(?))
      1. Difference between human and other life objects? Self-consciousness.
      2. Human intelligence?
        1. Intelligence: computation (of information) + engineering
        2. what is human society /civilization and how did it developed?
          1. self-consciousness leads to needs for society and social activities.
      3. Artificial intelligence? (as in a narrower definition)
        1. computation (of information)
      4. Human-like intelligence? (or AI in its broader def?)
        1. artificial intelligence + engineering (Embodied AI)
    4. What is knowledge? What is the science?
      1. Knowledge is connected data /information. (so what is data /information?)
      2. Arts and Humanity 🆚 Natural Science ?
      3. Sentiments 🆚 Logics?
      4. (What is academic research?)

Computer Science Part (Mathematical) Theory -> Computer System Design -> Applications of Computer

  1. What is data /information?
    1. Information Theory
    2. Information, Data, Number and Math in Digital Systems
  2. What is language? and its importance for data /information?
    1. (↗ Language & Literature)
    2. (↗ Natural Language Processing (NLP) & Computational Linguistics)
    3. Mathematics "axiomatization & formalization"
      1. Mathematical Logic (Foundations of Mathematics)
        1. Formal System, Formal Logics, and Its Semantics
        2. Set Theory & Axiomatic Set Theory
      2. Algebra
        1. Algebraic Structure & Abstract Algebra & Modern Algebra
        2. Category Theory (范畴论)
      3. Mathematical Analysis (& Analytical Mathematics)
    4. Reasoning /Logic via language?
      1. Logic (and Critical Thinking)
      2. Mathematics "types of proof"
        1. Mathematical Logic (Foundations of Mathematics)
          1. Formal System, Formal Logics, and Its Semantics
          2. Classical Logic (Standard Formal Logic)
  3. What is computation? What is a computer (theoretically)? Computer language and program /algorithm?
    1. Theory of Computation
      1. Models of Computation & Abstract Machines
      2. Computability (Recursion) Theory - Turing Machine and R.E. Language
      3. Complexity Theory & Computational Complexity
      4. Automata Theory and (Formal) Language Theory
    2. Model Theory (模型论)
    3. Formal System, Formal Logics, and Its Semantics
      1. Lambda Calculus (λ-Calculus)
      2. Type Theory (类型论)
    4. Proof Theory
      1. Computational Trilogy & Curry–Howard(–Lambek) Correspondence
    5. Computer Languages & Programming Methodology
    6. computing.excalidraw
  4. What is a computer in the sense of its design & construction? (4 aspects: hardware, software, policies & protocols, people/ user)
    1. Computer (Host) System | ↗ Computer Architecture |↗ Computer Networking and Communication
    2. What composes a computer? /How computer is designed in terms of hardware?
      1. EE Related Theories & Hardware Implementation
        1. Classical Electromagnetism
        2. Digital (Logic) Electronics Foundations
        3. Auxiliary Hardware & Peripherals Implementations
        4. Computer Implementations, Teardown & Repairs
      2. Computer Architecture
        1. Computer Microarchitectures (Computer Organization) & von Neumann Model
        2. Instruction Set Architecture (ISA) & Processor Architecture
      3. Computer Engineering, Embedded & IoT
    3. What is a program (again?) and how does it work?
      1. The Essence of Computing - Programs & The Semantics of Programs
      2. Computational Trilogy & Curry–Howard(–Lambek) Correspondence
      3. Why and how do we program? /How are programming languages designed? 2. ↗ Computer Languages & Programming Methodology 1. ↗ Programming Language Theory (PLT) 1. ↗ Formal Semantics and Programming Language 2. ↗ Programming Tool Chain 3. ↗ ASM (Assembly Languages) 3. Using programming languages to solve problems: 1. ↗ Algorithm & Data Structure 2. ↗ C & CPP 3. ↗ Java 1. ↗ JVM Instrument Set & Java Bytecode 2. ↗ Java Virtual Machine (JVM) 4. ↗ Python 5. ↗ ECMAScript-Based Languages & JavaScript 6. ↗ Golang 7. ↗ Rust
      4. What happened when a program is running? /How is software programmed, compiled, and run?
        1. Programming Language Processing & Program Execution
          1. Program Language Processing & Compilation Theory (Compile-time)
          2. Program Linking & Loading (Link-time & Load-time)
          3. Program Execution (Runtime)
          4. 怎么构造一个最小的 helloworld程序? --- jyy
          5. Where is the first instruction of a C/Python/Java/Go/etc. program?
        2. Software (Program) Techniques & Binary Engineering
          1. Program Analysis Basics
          2. SRE (Software Reverse Engineering)
        3. etc.
    4. What happened during computer booting? /How does computer start running?
      1. Firmware and Computer (OS) Booting
      2. Computer Bootstrapping (Booting)
    5. What happened after computer booting? /How computer is designed in terms of software?
      1. Software Engineering
      2. Computer Languages & Programming Methodology
        1. Programming Tool Chain
      3. How does OS work?
        1. System Software Engineering
        2. Operating System & OS Kernel (Theory Part)
          1. OS Processes & Automata Management (CPU + Main Memory Resource)
          2. OS Memory Management (Main Memory + Secondary Memory Resource)
          3. OS Scheduling & Resource Management
        3. Operating Systems & Kernels (Engineering Part)
          1. Shell & Terminals (Console)
      4. How do applications work? how to design application software with good quality?
        1. Application Software Engineering
          1. The Internet Development (and Web Development)
            1. Web BackEnd Dev & Middleware
            2. Web FrontEnd Dev
          2. CLI Software Development
          3. Desktop & Monolithic Application Development
          4. Mobile Application Development
        2. Information Systems & System Architecture Design
    6. What happened when a network request is sent and a response is received? /How does computer network(or the Internet) work?
      1. Computer Networking and Communication
      2. The Internet Development (and Web Development)
      3. Web Browser Development
        1. Google Chrome & Chromium
        2. Mozilla Firefox
  5. How to apply the power of computer into solving real world problems? Below lists (some) CS fields and related topics:
    1. Mathematics & ↗ Discrete Mathematics & TCS (Theoretical Computer Science) 2. ↗ Mathematical Modeling & Abstraction 3. ↗ Algorithm & Data Structure 4. ↗ Operations Research (OR) 5. ↗ Cybernetics & Control Theory 6. etc.
    2. Computing Methodologies
      1. Artificial Intelligence 🔥
        1. AI4X, AGI (Artificial General Intelligence) & AIGC 🤔
        2. Natural Language Processing (NLP) & Computational Linguistics
          1. LLM (Large Language Model) 🔥 🔥
          2. Multimodal AI & MLLM
        3. Computer Vision (CV)
        4. AI + Virtual Reality
        5. etc.
      2. Scientific Computing
      3. High Performance Computing
      4. etc.
    3. Computer Engineering, Embedded & IoT
      1. AIoT (AI for IoT) & Edge AI
      2. Embedded Control System (Software)
      3. Robots Development 🔥
      4. Autonomous Driving
      5. etc.
    4. Software Engineering
      1. Application Software Engineering 🔥
      2. System Software Engineering
      3. Cloud Computing & Cloud Native
      4. Computer Virtualization
      5. etc.
    5. Information Systems & System Architecture Design
    6. Data-Oriented & Human-Centered Technologies
      1. Human-Computer Interaction
      2. Human-Data Connectivity
      3. Human-Computer Interaction
      4. Data Science
      5. Web 3.0 & Decentralized Finance 💸
      6. Quantitative Investment & Computational Finance 💸
      7. etc.
  6. ⭐ How to improve computer /information system? (theory perspective; system perspective; application perspective)
    1. Application: how to use existing computer to solve new problems?
    2. Interaction: how to make interactions with human more smooth?
    3. Performance: how to improve the performance?
      1. Scalability
      2. Resources consumption
        1. manufacture cost
        2. computation complexity
        3. power consumption
      3. Execution speed
      4. Thorough put /concurrency
      5. Correctness
      6. Safety
    4. Development: how to speed up / simplify the process of development (under same performance)?
    5. Maintenance: how to maintain the system for desired time?
      1. Duration
      2. Cost
      3. Performance: how to maximally reduce the decrease of performance over time?
    6. CyberSecurity (note that the security issue is a special topic because it spans all aspects that related to information and information system, unlike other CS-subfields that specialize on just one certain area.)
      1. Risk Management
        1. Cybersecurity Threats & Attacks
      2. Cybersecurity Basics & Information Security (InfoSec)
      3. Cryptology & Secure Communication
        1. Cryptography
      4. Security aspects #1:
        1. Social Engineering & Physical Security
        2. Software Security
        3. Hardware Security
      5. Security aspects #2:
        1. Data Security
        2. Application Security
        3. Network (& Communication) Security
        4. System Security
        5. Physical Security
      6. etc.

What can I do after learning CS?

Learning English the Right WayInternational Opportunities

Keep doing CS!

IT Industry

Electronics & Information Technologies Business Fields ResearchCS & IT Jobs & Interns Related

IT Laws & Institutions in United StatesIT Laws & Institutions in China

IT Academia

Academics 🎓 (In CS)(CS) Master & PhD Guide - Preparation & Application(CS) Academics Roadmap & Tool Chain

Government & Management & Consultation

🤔

Explore other parts of the Universe!

Universe, Self-Awareness, and Intelligence

Ref