Beasting and Gettin' Punk'd at Computer Sciencee
by Dennis Yeh and John Morrison
Pay heed to Our Anthem! Take 5, turn the volume up, and listen.
How to Beast Computer Science Maius Opus Moveo!
- Exceed the boundaries. Don't just do what is expected. If you have a question, experiment and explore. Break things and learn why they break.
- If you see something cool, reverse-engineer it, dissect it and recreate it. Own it.
- As you read, try out new things you see right away. Crank your box and write code as you read! Compile and run the sample code and tinker with it. Bend it, stretch it, break it, and understand it.
- Learn about your language's documentation. If it's available to install, put it on your box.
- Use standard libraries to solve problems. Avoid reinventing wheels. This is why it is vital to learn about your language's documentation. Spend some time learning about some libraries you don't see in class. Use them in your coding.
- Good enough ain't good enough. Do not accept "good enough" in any of its pernicious guises. Why isn't good enough good enough? Just look at the example of a run-of-the-mill public school. Ask your parents about the 1974 automobile model year. Do you spend your hard-earned money on stuff that is just "good enough?"
- ``It works'' is good enough. Ask yourself: If I were to write this again from scratch, would I again arrive at this (ungainly) solution? Always try to buff and improve your code so it works clearly and cleanly. We repeat: Do not accept "good enough!"
- Heed the eleventh commandment: Thou shalt not maintain duplicate code. If you are doing the same thing over and over again, refactor your code and wrap the repeatedly-used procedure in a function.
- Create strong black boxes that you test mercilessly. Then don't be afraid to rely on them. Keep your test code so if something goes wrong, you understand the vulnerabilities you have tested. This is another reason to use standard libraries. Very smart people make them and they maintain continuing efforts to break then improve them.
Traits of Good Coders
- Good coders are fearless problem solvers.
- Good coders are intellectually inquisitive and acquisitive.
- Good coders try to avoid reinventing wheels.
- Good coders have a strong sense of taste and aesthetics, and are guided by these senses in their work.
- Good coders know how to make good abstractions.
- Good coders are at perpetual war with redundancy.
- Good coders write programs that are extensible.
- Good coders ferret out and aggressively use every knowledge resource they can find.
- Good coders prefer simplicity to complexity.
- Good coders write clear code that is easy for others to understand.
How to Get Punk'd If you wanna get punk'd liberally use these measures.
- Blow off the reading.
- Read passively.
- E-surf and E-goof in class.
- Try to just memorize.
- Avoid us outside of class.
- Wait until the last minute to start projects.
- Skip writing test code. Be too lazy to look in the solution manual (Your test code is it!)
- Skip documenting your code.
- Do the minimum.
Some Valuable Books These volumes will make you a better programmer. Read and re-read them as your knowledge advances.