background preloader

The Principles of Good Programming

The Principles of Good Programming
Heron-Centric: Ruminations of a Language DesignerThe Principles of Good Programmingby Christopher DigginsJuly 24, 2011 Today's post is a lightly edited repost from my blog at The Area, a web-site dedicated to users of Autodesk media and entertainment products. I came up with this list of principles to help with a recent C# training I gave, and I thought that members of the community could appreciate these principles and have some interesting insights to share. The principles of good programming are closely related to principles of good design and engineering. DRY - Don’t repeat yourself - This is probably the single most fundamental tenet in programming is to avoid repetition. KISS (Keep it simple, stupid!) Avoid Creating a YAGNI (You aren’t going to need it) - You should try not to add functionality until you need it. Avoid Premature Optimization - Don’t even think about optimization unless your code is working, but slower than you want.

Sphere Online Judge (SPOJ) Video Lectures | Introduction to Computer Science and Programming Easing into SICP "The Structure and Interpretation of Computer Programs" by Abelson and Sussman ( is often recommended reading on HN and elsewhere. However, you may find it to be much denser than the breezy computer books that are typically published. To help you acclimate to the concepts in SICP, I recommend the following steps: First, read "Concrete Abstractions" by Max Heilparin ( and "Simply Scheme" by Brian Harvey ( Next, listen to or watch Brian Harvey's lectures for "The Structure and Interpretation of Computer Programs" ( Third, watch the lectures by Holly Yanko ( Finally, watch the videos of Abelson and Sussman (

ArsDigita University Curriculum About the Curriculum The curriculum was modeled on the undergraduate CS program at MIT. Several of the courses were straightforward adoptions of MIT courses. A few were specifically designed for the program, which was roughly in line with the ACM's 2001 Model Curricula for Computing. Courses Math for Computer Science - Tara Holm Structure and Interpretation of Computer Programs - Holly Yanco Discrete Math - Shai Simonson How Computers Work - Gill Pratt Object-oriented Program Design - David Goddeau Algorithms - Shai Simonson Systems - Luis Rodriguez Web Applications - Philip Greenspun Theory of Computation - Shai Simonson Artificial Intelligence - Patrick Winston Unix Workshop Database Management Systems - Ravi Jasuja Applied Probability - Tina Kapur Course of study The course of study at ArsDigita University was sequential, with most courses lasting one month, and was comprised exclusively of computer science and related mathematics.