Knowledge / Computer Science and Engineering
Computer Science and Engineering notes
Free study notes for Computer Science and Engineering (B.E./B.Tech) students in India: 86 topics across 10 subjects - Programming, Data structures, Algorithms, Operating systems, Databases, Computer networks, Software engineering, Web, cloud and design and more. Each note explains the concept, works the examples with the numbers done, gives the Indian standards, codes and laws in force today, and ends with interview questions and the mistakes examiners look for - for semester exams, competitive exams, campus placements and job interviews.
Programming
- C programming fundamentals
- Pointers and dynamic memory
- Object-oriented programming concepts
- Java essentials
- Python essentials
- Compilation, linking and memory layout
- Exception handling and debugging
- Functional programming basics
- JavaScript essentials
Data structures
- Arrays and strings
- Linked lists
- Stacks and queues
- Trees and binary search trees
- Heaps and priority queues
- Hashing and hash tables
- Graphs and their representation
- Balanced trees: AVL, red-black and B-trees
- Disjoint set union
- Segment trees and Fenwick trees
- Tries and string data structures
Algorithms
- Time and space complexity
- Sorting algorithms
- Searching and binary search
- Recursion and backtracking
- Greedy algorithms
- Dynamic programming
- Graph algorithms: BFS, DFS and shortest paths
- Bit manipulation
- Divide and conquer
- DSA interview patterns
- Minimum spanning trees and network flow
- Number theory for programmers
- String matching: KMP, Rabin-Karp and Z
Operating systems
- Processes and threads
- CPU scheduling
- Process synchronisation and deadlocks
- Memory management and virtual memory
- File systems and disk scheduling
- I/O systems and device management
- Linux internals: processes, signals and permissions
- Virtualisation and containers
Databases
- ER model and normalisation
- SQL queries and joins
- Transactions, ACID and indexing
- Advanced SQL: subqueries, CTEs and window functions
- Concurrency control and recovery
- Database design case studies
- NoSQL databases
- Query processing and optimisation
Computer networks
- OSI and TCP/IP models
- IP addressing and subnetting
- TCP, UDP, HTTP and DNS
- Data link layer: framing, error control and MAC
- Routing algorithms and protocols
- Socket programming
- Wireless and mobile networks
Software engineering
- SDLC and Agile
- Git and version control
- Software testing basics
- Clean code and code reviews
- Design patterns
- Low-level design (object-oriented design) interviews
- Requirements engineering and UML
- Software architecture: monoliths and microservices
- Software project management and estimation
- Test automation and TDD
Web, cloud and design
- Web fundamentals: HTML, CSS and JavaScript
- REST APIs
- Cloud computing basics
- System design basics for freshers
- Authentication and authorisation: sessions, OAuth and JWT
- AWS core services
- Back-end development with Node.js
- Caching, queues and CDNs
- Containers: Docker and Kubernetes
- Front-end frameworks: React basics
- System design case studies
Theory and architecture
- Theory of computation basics
- Compiler design basics
- Computer organisation and architecture
- Computer graphics basics
- Digital logic for computer science
- Distributed systems basics
- Parallel computing and GPUs