The most important thing is the quality and robustness of your coding. It must be clear and well-structured, not relying on strange unexplained tricks. Meaning that if you continue to program in the same style after graduation in the real world, where programs may be 1,000 times larger and with correspondingly more complex requirements, you should still be able to make things word reliably. So no giant functions that perform too many tasks. Have sensibly chosen variable and function names. Make the structure of your program visibly obvious. Work from a conscious design. DIY, do it yourself. If you discover a function or class that does a major part of any assignment for you, then obviously you may not make use of it. There is a list of permissible #includes in a separate document. I grade programs by looking at them, running them is a secondary concern. For grades, good design is much more important than just happening to produce the right answer. A good program that doesn't quite get it right gets a better grade than a bad program with correct test output. Inefficiency only has a negative effect on grades if it is really dramatic. Reliability is much more important than speed, and generally the programmer's time is more valuable than the computer's.