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- 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 and .
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.
Navigation
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
- Build a strong foundation: Ensure you understand the basic concepts before moving to advanced topics
- Practice regularly: Computer science requires active practice, not just reading
- Implement algorithms: Code the algorithms you study to deepen understanding
- Analyze complexity: Practice analyzing time and space complexity
- Connect theory to practice: Relate theoretical concepts to real-world applications