Rate your computer science knowledge
Computer science is the theoretical knowledge of programming.
This is something that not all jobs require so don't worry if you do not know all of this, but I will ask anyways just to get a better sense of where your strengths and weaknesses are as a programmer.
Action Plan contains 15 steps to Rate your computer science knowledge.
Before asking you to rate your level, I will share with you the definition of each level of experience so you know which option to choose.
Level 0 means you don't know the difference between Array and LinkedList.
Level 1 means you are able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks.
Level 2 means you know space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, able to explain how hashtables can be implemented and can handle collisions, priority queues and ways to implement them, etc...
And finally Level 3 means you have knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries, etc...
- Option #1: Identify as data structures Level 0
- Option #2: Identify as data structures Level 1
- Option #3: Identify as data structures Level 2
- Option #4: Identify as data structures Level 3
Here are the definitions of each Level for your algorithms experience:
Level 0 means you are unable to find the average of numbers in an array.
Level 1 means you know basic sorting, searching and data structure traversal and retrieval algorithms.
Level 2 means you understand Tree, Graph, simple greedy and divide and conquer algorithms, and are able to understand the relevance of the levels of the Programmer Competency Matrix that you are completing right now.
Level 3 means you can recognize and code dynamic programming solutions, you have good knowledge of graph algorithms, good knowledge of numerical computation algorithms, are able to identify NP problems, etc...
- Option #1: Identify as algorithms Level 0
- Option #2: Identify as algorithms Level 1
- Option #3: Identify as algorithms Level 2
- Option #4: Identify as algorithms Level 3
Which level you identify with the most?
Level 0) You don't know what a compiler, linker or interpreter is
Level 1) You have a basic understanding of compilers, linker and interpreters. You also know what assembly code is and how things work at the hardware level. You have knowledge of virtual memory and paging.
Level 2) You understand kernel mode vs. user mode, multi-threading, synchronization primitives and how they’re implemented, able to read assembly code. You also understand how networks work, network protocols and socket level programming.
Level 3) You understand the entire programming stack, hardware (CPU + Memory + Cache + Interrupts + microcode), binary code, assembly, static and dynamic linking, compilation, interpretation, JIT compilation, garbage collection, heap, stack, and memory addressing.
- Option #1: Identify as systems programming Level 0
- Option #2: Identify as systems programming Level 1
- Option #3: Identify as systems programming Level 2
- Option #4: Identify as systems programming Level 3
Action Plan estimates 2 minutes to Rate your computer science knowledge.