Computer Science
In computer science central role plays ==algorithms and data structures==.
Computer science focuses on methods involved in design, specification, computer programming, verification, implementation, and software testing of human-made computing systems.
Core concepts in computer science
Core computer science concepts from Wikipedia1.
The theory of computation helping to create theoretical models (abstract models) of how to computers work (computation) and understanding the types of problems (general classes of problems) these computers can solve. So it’s about creating abstract computing models and understand which general classes of problems these models can solve.
Cryptography and computer security fields is needed to study (and practice) how to prevent security vulnerabilities and how to communicate securely (secure data transmission).
Computer graphics and computational geometry address the generation of images.
Programming language theory considers different ways to describe computational processes. Different programming languages can implement computational processes in different ways and can be used to solve different classes of problems.
Database theory concerns the management of repositories of data. For example, you have a bunch of messy data (desktop shortcuts), and you can organize them in some structures (group, sort, etc.) to manage them more effectively.
Human–computer interaction investigates the interfaces through which humans and computers interact. There many UI specialists, which usually haven’t developing software skills, but they know how to create effective UI.
Software engineering focuses on the design and principles behind developing software. And usually software engineers solving problems in real world with requirements from customers.
There are many areas (complex systems), which investigate the principles and design in their own area. Main areas are: operating systems, computer network and embedded systems.
What describes Computer Architecture?
Computer architecture describes the construction of
computer components and computer-operated equipment (Input, Output, CPU, RAM).
Goal of Artificial intelligence?
Artificial intelligence and machine learning aim to
synthesize goal-orientated processes such as problem-solving, decision-making,
environmental adaptation, planning and learning found in humans and animals.
In other words replicate humans and animals processes/behavior.
Within artificial intelligence, computer vision aims to understand and process image and video data, while natural language processing aims to understand and process textual and linguistic data.
The Turing Award is generally recognized as the highest distinction in computer science.
Learning path
Here is list of my current active source of learning materials:
- informatika.ru
- Wengrow-Data structures and algorithms
- LeetCode - research and solve problems.
- Jay Vs. Leetcode
- Code Interview University
High-level topics
- algorithm
- big O notation
- computational complexity
- Asymptotic analysis
- data structure
- More Knowledge
- linear search
- binary search
- Bitwise operations
- sorting algorithm
- selection sort
- insertion sort
- heapsort
- quicksort
- mergesort
- Even More Knowledge
-
NP, NP-Complete and Approximation Algorithms
-
How computers process a program
-
Processes and Threads
-
String searching & manipulations
-
Endianness
-
Networking
Optional Topics & Resources
- System Design, Scalability, Data Handling
- Additional Learning
- compiler
- Emacs and Neovim
- Unix commands
- information theory
- Parity & Hamming Code
- Entropy
- cryptography
- Compression
- computer security
- garbage collection
- concurency and parallel computing
- Messaging, Serialization, and Queueing Systems
- A*
- Fast Fourier Transform
- Bloom Filter
- HyperLogLog
- Locality-Sensitive Hashing
- van Emde Boas Trees
- Augmented Data Structures
- Skip lists
- Network Flows
- Disjoint Sets & Union Find
- Math for Fast Processing
- Treap
- Linear Programming
- Geometry, Convex hull
- Discrete math