Excellente question !
J'ai trouvé une réponse, malheureusement seulement en anglais, à la même question posée dans la langue de Shakespeare, sur QUORA :
What are the most important fundamental concepts in Computer Science?Edit
For example, the concept of turing machines is probably up there. I'm mostly self-taught, so I'm looking for a list of things to make sure I learn about in addition to syntax and general programming know-how.Edit
1 Comment • Share • Options
Computer Science: For a software engineer, what are the most important mathematical concepts/theorems to be familiar with?
Computer Science: What are the most important computer and mathematical concepts a non graduate computer programmer should learn?
Mathematics: Which scientists and/or mathematicians are doing the most important, fundamental, useful, provocative, and/or interesting ... (continue)
What are the most important unsolved problems in computer science in 2012?
See more related questions
Latest activity 7h ago.
This question has 55725 topic followers.
648 people have viewed this question.
19 people are following this question.
Derianto Kusuma, Co-founder of Traveloka.com
12 votes by Anon User, Frank Harvey, Damiann Mangan, (more)
Discrete math -- you need to master all the concepts of sets, boolean logic, combinatorics, number theory, probability, algebra, etc. to have a strong foundation for computer science. Continuous math (calculus, etc.) is not very important I think :)
Next that I can think of:
The concept of states. This makes the understanding of states, state machine, state transitions, the whole concepts of stateful vs. stateless design, caching, cache coherence, persistence, soft states, etc. possible. A lot of my non-programmer friends don't understand this concept.
The concept of instruction and the sequentiality of the processing of instructions. Some junior programmers I knew initially didn't understand that instructions are executed sequentially. (Processors don't really have to be sequential, but it's what the vast majority of processors are mostly supporting right now).
Complexity of a piece of program (both runtime and space complexity). Need to deeply understand what O(1), O(N), O(N log N), etc. mean before understanding why certain algorithms / data structures are fundamentally (not just artificially / empirically) more performant than the others.
Concepts around data. Input and output and intermediate forms, mutable vs. immutable, serialized vs. object form, object-oriented programming, canonical vs. derivative, representations (normalized vs. denormalized), eager vs. lazy loading, database concepts like ACID and BASE, encoding and decoding, encryption and decryption, compression and decompression, information security.
Concepts around memory: virtual memory space, stack, heap, pointers, referents vs. references, allocation and deallocation, garbage collection, working set, paging to disk, etc.
Concepts around processes: the running instance of code. Concepts: compilation, thread, process, statically loaded vs. dynamically loaded libraries, runtime vs. compile time errors, how the OS schedules processes and threads, etc.
Concepts around procedures: relating to how to write code. Routines (do something from start to end), sync vs. async (whether to wait or not wait for the answer), callback, messaging (decoupling request and response)
The higher level concepts after these probably belong to the domain of software engineering, systems, or some specializations of theoretical computer science.