What a Comp Sc person should know?

What should a computer science/IT person know? In today's world, people exhibit knowledge in terms of knowing Java, .NET, etc. This is, of course, shallow. Saying I know "operating systems" is too vague and superficial. At the same time, it is hard, given the vast range and scope of the field, to define what essential things a computer science/IT professional should know. Here is an attempt to define this in terms of concepts that s/he should know. It is work in progress. Send your inputs to me.

We list basically concepts here — not technologies/tools which come and go, not guidelines and conventions, etc. What is a concept is sometimes a complex question. So, some discretions have been exercised here. But suggestions to make them better are welcome.

200 essential concepts of Computer Science (v1.3, dt 9th June 2013)

Computer architecture/organization

  1. Boolean logic
  2. Combinational circuits
  3. Sequential circuits
  4. Data representation (integer, floating point number, character — ASCII and Unicode)
  5. Instruction sets
  6. Instruction Pipelining
  7. Memory organization
  8. Von Neumann architecture / Von Neumann model

Programming

  1. Assembly Language
  2. Procedural Programing
  3. declarations and definitions
  4. Scope of variables
  5. Arrays and Strings
  6. Memory management and organization
  7. Parsing
  8. Object Oriented Programming
  9. Functional Programming
  10. Encapsulation
  11. Inheritance (single and multiple)
  12. Function/operator overloading
  13. Garbage collection
  14. Parameter passing mechanisms (by value, by reference, by name)
  15. Data Modeling
  16. Data Scrubbing
  17. Composition
  18. Dynamic-Link Library
  19. Programming with threads
  20. Mutual exclusion
  21. Synchronisation

Data-Structures

  1. Abstract Data Types
  2. Linear Data Structures (stack, queue, list, vector)
  3. Binary Tree/ Binary Search Tree
  4. Height balanced search trees
  5. Hash Tables
  6. Graph: representation and traversal
  7. Heaps

Algorithms

  1. Basics of complexity analysis including Big O notation
  2. NP complete problem
  3. Recursion
  4. Backtracking
  5. Greedy algorithm
  6. Divide and conquer
  7. Dynamic Programming
  8. Binary Search
  9. Shortest Path (Dijikstra) algorithm
  10. Travelling Salesman Problem
  11. Breadth-first search
  12. Depth-first search
  13. Common sorting algorithms (Quick, Merge, Heap, Shell)
  14. Postfix/prefix/infix notations and inter-conversions
  15. Basic matrix manipulations (sum, product, transpose, etc)
  16. Basic polynomial manipulations (sum, simplify, multiply, etc)

AI

  1. Machine Learning
  2. Natural Language Processing
  3. Data Mining
  4. Expert systems
  5. Turing test
  6. Unsupervised/Supervised learning
  7. Reasoning under uncertainty
  8. Fuzzy logic
  9. Information Retrieval
  10. Artificial neural network
  11. Decision Tree
  12. Clustering (K-means)
  13. Bayesian network
  14. Genetic Algorithms
  15. Intelligent agents
  16. Semantic web

Software Engineering

  1. Top-Down Design
  2. Bottom-up Design
  3. Software development life-cycle (SDLC)
  4. Waterfall model
  5. Spiral model
  6. Iterative and incremental development
  7. Rapid application development
  8. Agile development
  9. Revision control
  10. Bug tracking
  11. Software metrics
  12. Cost estimation
  13. Refactoring

Networking

  1. IP address
  2. Ethernet
  3. Subnets
  4. Firewall
  5. Routing protocol
  6. congestion control
  7. Secure Sockets Layer

Security

  1. Spoofing
  2. Authentication
  3. Authorisation
  4. Non-repudiation
  5. Integrity
  6. Cryptography
  7. Biometrics
  8. PKI

Operating System

  1. Critical Section
  2. Concurrency
  3. process vs threads
  4. Cross Compiler
  5. Race condition
  6. Deadlock
  7. Starvation, Livelock
  8. Producer-Consumer problem, Readers-writers problem, Dining philosophers problem, Sleeping barber problem
  9. Mutual Exclusion
  10. Semaphores
  11. Buffering
  12. Virtual Machine
  13. Virtual Memory
  14. Paging and segmentation
  15. Cache management and coherence
  16. Principle of locality of reference
  17. Kernel Mode
  18. Microkernel
  19. Scheduling Algorithms (FIFO, Round Robin, SJF etc)

Software Design

  1. UML diagrams
  2. Patterns - Creational patterns, Structural patterns, Behavioural patterns
  3. Principles - Open-closed principle, Inversion of Control, Single responsibility principle etc

Database Management

  1. CRUD operations
  2. Relational Model
  3. Entity-Relationship model
  4. DDL and DML (Structured Query Language)
  5. Normalization
  6. CNF and BCNF
  7. Advanced data types CLOB, BLOB etc
  8. ACID properties
  9. Views
  10. Triggers
  11. Stored procedures
  12. Query optimization
  13. Data warehousing

Web Technology

  1. Markup language
  2. HTML
  3. XML
  4. Cookies
  5. Session management
  6. Servlets
  7. Web services
  8. HTTP and HTTPS

Others

  1. Virtualisation
  2. SOA
  3. Open Source software [FOSS]
  4. Open standards
  5. Intellectual property [IP] (Patent, Copyright, Copyleft, Trademarks)
  6. Hypertext
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License