- The basics
- Conditions (if, else)
- Loops (for loops, while loops)
- Dictionaries
- Slices/lists/arrays
- String/array operations (split, contaings, length, regular expressions)
- Pseudo code (concisely describing your approach to a problem)
- Data structures
- Dictionaries / hash tables (array of linked lists, or sometimes a BST)
- Arrays
- Stacks
- SQL/tables
- Bigtables
- Sorting
- Searching
- Big O
- Regular expressions
- Typically O(n) to match, but backtracking engines can hit exponential O(2^n) worst case (catastrophic backtracking)
- It’s useful to be familiar with basic regex syntax, too
- Recursion
- And when to prefer iteration instead (stack depth / performance)
- Python
- List comprehensions and generators [ x for x in range() ]
- Iterators and generators
- Slicing [start:stop:step]
- Regular expressions
- Types (dynamic types), data structures
- Pros and cons of Python vs C, Java, etc.
- Understand common functions very well, be comfortable in the language
Security themed coding challenges
- Cyphers / encryption algorithms
- Be able to implement basic cyphers
- Parse arbitrary logs
- Web scrapers
- Another way to practice text parsing
- Port scanners
- Practice parsing network information
- Botnets
- How would you build ssh botnet
- Password bruteforcer
- Scrape meta data from PDFs
- Script to recover deleted items
- A program that looks for malware signatures in binaries / code samples