What should you have so far?
Good practice in programming, I presume!!!
Familiar with C programming
Decent background knowledge in mathematic, because most of problems in data structure and algorithm design are math related
Imagination,
Dedication,
Unityand
responsibility