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
- Boolean logic
- Combinational circuits
- Sequential circuits
- Data representation (integer, floating point number, character — ASCII and Unicode)
- Instruction sets
- Instruction Pipelining
- Memory organization
- Von Neumann architecture / Von Neumann model
Programming
- Assembly Language
- Procedural Programing
- declarations and definitions
- Scope of variables
- Arrays and Strings
- Memory management and organization
- Parsing
- Object Oriented Programming
- Functional Programming
- Encapsulation
- Inheritance (single and multiple)
- Function/operator overloading
- Garbage collection
- Parameter passing mechanisms (by value, by reference, by name)
- Data Modeling
- Data Scrubbing
- Composition
- Dynamic-Link Library
- Programming with threads
- Mutual exclusion
- Synchronisation
Data-Structures
- Abstract Data Types
- Linear Data Structures (stack, queue, list, vector)
- Binary Tree/ Binary Search Tree
- Height balanced search trees
- Hash Tables
- Graph: representation and traversal
- Heaps
Algorithms
- Basics of complexity analysis including Big O notation
- NP complete problem
- Recursion
- Backtracking
- Greedy algorithm
- Divide and conquer
- Dynamic Programming
- Binary Search
- Shortest Path (Dijikstra) algorithm
- Travelling Salesman Problem
- Breadth-first search
- Depth-first search
- Common sorting algorithms (Quick, Merge, Heap, Shell)
- Postfix/prefix/infix notations and inter-conversions
- Basic matrix manipulations (sum, product, transpose, etc)
- Basic polynomial manipulations (sum, simplify, multiply, etc)
AI
- Machine Learning
- Natural Language Processing
- Data Mining
- Expert systems
- Turing test
- Unsupervised/Supervised learning
- Reasoning under uncertainty
- Fuzzy logic
- Information Retrieval
- Artificial neural network
- Decision Tree
- Clustering (K-means)
- Bayesian network
- Genetic Algorithms
- Intelligent agents
- Semantic web
Software Engineering
- Top-Down Design
- Bottom-up Design
- Software development life-cycle (SDLC)
- Waterfall model
- Spiral model
- Iterative and incremental development
- Rapid application development
- Agile development
- Revision control
- Bug tracking
- Software metrics
- Cost estimation
- Refactoring
Networking
- IP address
- Ethernet
- Subnets
- Firewall
- Routing protocol
- congestion control
- Secure Sockets Layer
Security
- Spoofing
- Authentication
- Authorisation
- Non-repudiation
- Integrity
- Cryptography
- Biometrics
- PKI
Operating System
- Critical Section
- Concurrency
- process vs threads
- Cross Compiler
- Race condition
- Deadlock
- Starvation, Livelock
- Producer-Consumer problem, Readers-writers problem, Dining philosophers problem, Sleeping barber problem
- Mutual Exclusion
- Semaphores
- Buffering
- Virtual Machine
- Virtual Memory
- Paging and segmentation
- Cache management and coherence
- Principle of locality of reference
- Kernel Mode
- Microkernel
- Scheduling Algorithms (FIFO, Round Robin, SJF etc)
Software Design
- UML diagrams
- Patterns - Creational patterns, Structural patterns, Behavioural patterns
- Principles - Open-closed principle, Inversion of Control, Single responsibility principle etc
Database Management
- CRUD operations
- Relational Model
- Entity-Relationship model
- DDL and DML (Structured Query Language)
- Normalization
- CNF and BCNF
- Advanced data types CLOB, BLOB etc
- ACID properties
- Views
- Triggers
- Stored procedures
- Query optimization
- Data warehousing
Web Technology
- Markup language
- HTML
- XML
- Cookies
- Session management
- Servlets
- Web services
- HTTP and HTTPS
Others
- Virtualisation
- SOA
- Open Source software [FOSS]
- Open standards
- Intellectual property [IP] (Patent, Copyright, Copyleft, Trademarks)
- Hypertext