Skip to content

Computer Science

Computer Science

Computer science is the study of computation, information, and abstraction. It encompasses the design and analysis of algorithms, the architecture of computing systems, and the mathematical theory that determines what can and cannot be computed. At the university level, the discipline is typically divided into algorithms, systems, and theory.

Core Areas

Algorithmic study focuses on the efficiency of procedures for solving computational problems, often expressed in terms of time and space complexity using big-OO notation. Systems covers the practical aspects of building software and hardware, including operating systems, networks, and databases. Theory establishes the formal boundaries of computation through automata theory, computability, and complexity classes such as P\text{P} and NP\text{NP}.

Approach to Study

Computer science requires both mathematical rigour and practical implementation skills. Work through algorithm traces by hand before writing code, and verify your understanding of complexity analysis by applying it to familiar algorithms such as binary search or merge sort. Understanding the theoretical foundations will deepen your appreciation of why certain problems remain computationally intractable.

Overview

University-level computer science notes covering algorithms, systems, and theory with worked examples and key concepts.

Subjects Covered

  • Algorithms: Design, analysis, optimisation, and computational complexity
  • Systems: Operating systems, networks, databases, and distributed systems
  • Theory: Automata theory, computability, complexity classes, and formal languages
  • Programming: Software engineering, programming languages, and compiler design

Prerequisites

  • Discrete mathematics (logic, sets, graphs, combinatorics)
  • Linear algebra (matrices, eigenvalues, vector spaces)
  • Calculus (differentiation, integration, series)
  • Basic programming experience

How to Use These Notes

Start with the introductory sections to build foundational knowledge, then progress to more advanced topics. Each section includes worked examples and practice problems. Use the diagnostic tests to identify areas for improvement.

Use the sidebar to browse topics, or start with the introductory pages linked from the sidebar.

Additional Resources

Each section includes:

  • Detailed explanations of key concepts
  • Worked examples with step-by-step solutions
  • Practice problems with answers
  • Common pitfalls and how to avoid them
  • Connections to other areas of computer science

Study Tips

  1. Build a strong foundation: Ensure you understand the basic concepts before moving to advanced topics
  2. Practice regularly: Computer science requires active practice, not just reading
  3. Implement algorithms: Code the algorithms you study to deepen understanding
  4. Analyze complexity: Practice analyzing time and space complexity
  5. Connect theory to practice: Relate theoretical concepts to real-world applications