Computer Sciences
lastmod 2026-02-06created 2014-06-128 edits
Computer engineering
Information technology
|
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
- ComputerSciences:Basic - Introduction to computer science
Subcategories
- Algorithms
- Data structures
- System architecture
- Computer network
- Virtual reality
- Databases
- Artificial intelligence
- Computer graphics
- User interfaces
- Computer engineering
- Information technology
- Software
- Hardware
- Operating Systems
- Virtualization
- Cloud Computing
- Media Streaming
- Continuous integration (CI)
- Web Programming
- Game Programming
- Multimedia Codec
- Network Programming
- Computer graphics
- Protocol
- Integrated development environment (IDE)
- Data Type
- Scripting language
- Shell script
- Markup language
- Interface definition language (IDL)
- Formal language
- Diagram
- Programming Paradigms
- No-code development platform
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
- Open Source Society University – A free self-study roadmap for computer science | GeekNews
- [Original] Github - ossu/computer-science
🎓 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
- 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)
- 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
- 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
- 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
- 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)