Skip to content
Search

Computer Sciences

lastmod 2026-02-06created 2014-06-128 edits

Subfields of computer science



Databases



Artificial intelligence



Computer graphics



User interfaces



Computer engineering
(includes fields related to hardware research)



Information technology
(includes fields related to the use of computers)



Software



Hardware

Computer science is the discipline that studies the theoretical foundations of information and computation, how that computation is carried out, and applications in computer systems. It began as a branch of mathematics and went on to establish its own domain. In Korean, the terms jeonsanhak (電算學, "computing studies") and jeonsan gwahak (電算 科學, "computing science") are also used.

Categories

Subcategories

Relationship to other fields and controversies

Computer science is not limited to the study of the machine called the computer that so many people use today. Designing and deploying computer systems is generally considered to fall outside the scope of computer science. For example, the field that studies computer hardware is called computer engineering, and research on the deployment and use of computers belongs to information technology or the field of information systems.

Like many scientific fields, computer science not only has its closest ties to mathematics but is itself a branch of science grounded in mathematics. The mathematics that most influenced the foundations of computer science is George Boole's Boolean algebra. Boolean algebra is an algebra based on the binary system; field theory and ring theory were also important influences. Early computer science was strongly shaped by mathematicians such as Kurt Gödel and Alan Turing, and branches of mathematics such as mathematical logic, category theory, domain theory, and algebra continue to develop alongside computer science.

The relationship between computer science and software engineering is much debated, because the terms computer science and software engineering are vaguely defined. Some people say software engineering is merely one branch of computer science, while others disagree.

Roadmap

🎓 Path to a free self-taught education in Computer Science!

  • The OSSU curriculum offers a complete computer science education for free, using online materials from leading universities around the world
  • Reproduces the structure of a bachelor's-level computer science curriculum through introductory, core, advanced, and final project stages
  • All courses and assignments are free or mostly free, though some graded assessments may cost money
  • An active global network of learner support, such as the Discord community, and ongoing updates to the materials are maintained
  • Learners can adjust their pace and choices flexibly, independently or in groups, to suit their own circumstances

What OSSU is and why it matters

OSSU (Open Source Society University) is an open-source curriculum designed so that anyone can teach themselves a computer science education at the level of a formal degree at no cost. It draws on open courses and materials from the world's top universities, such as Harvard, MIT, and Princeton, and aims to provide a balanced learning experience grounded in theory, practice, and application rather than one-off knowledge transfer.

  • All learning materials are selected from high-quality free resources published online
  • Closely follows international baseline standards for undergraduate computer engineering programs, such as the CS2013 standard
  • Mainly aimed at people who are self-motivated, have steady study habits, and can get help from the global learning community

Curriculum structure and features

  • Introduction (Introduction to CS): A hands-on taste of the basic concepts and fun of computer science and programming. Includes Python programming, theory of computation, and basic data structures and algorithms
  • Core (Core CS): Corresponds to the third-year university curriculum, with required coverage of programming (functional, object-oriented, software design), mathematics (discrete mathematics, statistics, probability, calculus), systems (computer architecture, OS, networking), theory (algorithms, NP problems, etc.), security, applications, ethics, and more
  • Advanced (Advanced CS): Corresponds to final-year coursework. Learners can choose areas of interest among advanced programming, systems, theory, information security, and advanced mathematics
  • Final project: Apply what you have learned to carry out a real project, then share and validate the results with fellow learners around the world. Can serve as proof of practical skills and as a job-hunting portfolio

Detailed curriculum

  • Prerequisites
    • Core CS requires high-school-level mathematics (algebra, geometry, pre-calculus)
    • Advanced CS can be taken only after completing all of the core courses
    • The Advanced systems courses require basic high-school-level physics
  • Introduction to CS
    • First steps in computer science. Introduces basic computation, imperative programming, data structures, algorithms, and more
    • Required course: 'Introduction to Computer Science and Programming using Python' (14 weeks)
  • Core CS
    • Programming
      • Broad hands-on practice with functional/object-oriented programming, testing, patterns, typing, language diversity, and more
      • Systematic Program Design, Programming Languages (A–C), Object-Oriented Design, Software Architecture, etc.
    • Mathematics
      • Includes discrete mathematics, mathematical proof, basic statistics, big O notation, probability, and calculus
    • Development tools and environment
      • Essential working tools such as the terminal, shell scripting, vim, the command line, and version control (git)
    • Systems
      • An overall understanding of how computers work, from hardware to operating systems to networks
      • Examples: the Nand to Tetris project, OS Three Easy Pieces, Networking, etc.
    • Theory
      • Includes algorithm analysis, divide and conquer, graphs, dynamic programming, NP problems, and more
    • Security
      • Includes information security fundamentals, secure coding, vulnerability analysis, and electives in networks/cryptography
    • Applications
      • Covers a wide range of practical application areas, including databases, machine learning, computer graphics, and software engineering
    • Ethics
      • Emphasizes the ethics every engineer needs: the social context of technology, professionalism, intellectual property, data privacy, and more
  • Advanced CS
    • Chosen by career path or interest. Parallel programming, compilers, languages such as Haskell/Prolog, software debugging/testing
    • A wide range of options, including computer architecture, numerical analysis/logic/probability, theory of computation, information security, and building systems
  • Final Project
    • Choose a practical project, then design, implement, and share it
    • Example options: full-stack services, robotics, data mining, big data, IoT, cloud computing, data science, game development, etc.
    • You can come up with your own or use a recommended course
  • After completing the curriculum
    • Recognition of having acquired knowledge equivalent to a bachelor's degree in CS
    • Recommended next steps such as job preparation, further reading (a list is provided), and offline developer meetups
    • Encouragement to explore new technologies (languages such as Elixir/Rust/Idris)

Favorite site

author Zer0 sitemap