- 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
- O(n), but O(n!) when matching.
- It’s useful to be familiar with basic regex syntax, too.
- Recursion
- And why it is rarely used.
- 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