Search 72,274 tutors
FIND TUTORS

The Fundamentals of Computer Programming

My philosophy on teaching computer programming stems from my first college computer science course, "The Structure and Interpretation of Computer Programs". It was taught in Scheme, a language that is mainly for learning programming and generally not for software development. It wasn't the language that mattered, but rather the concepts of programming that were taught through the language. That is how I thought to come up with the "ADCs of Programming" as a way to introduce students to the concepts of programming languages.

"A" is for actions. What tasks can the programming language perform? Most can do arithmetic, but the set of actions varies by programming language. "D" is for data. Every programming language has a way of representing data, from literal values to variables, because actions need to work with data. "C" is for choices. Without the ability to choose what actions to do or what data to use, programs would be inflexible and uninteresting. Therefore, programming languages have ways to allow a program to make choices. Finally, "s" is for sequences of actions as well as repetitions of sequences of actions. The concept of putting together multiple actions into a sequence and being able to repeat that sequence over and over adds immense power to the programs that can be made efficiently.

Once students get the "ADCs of Programming", regardless of the language that the concepts are taught in, they can then apply the same ideas to the next programming language that they want (or need) to learn. What are the actions? How is data handled? How can choices be made? How are sequences of actions put together and how are they repeated? Answering these questions for the new language allows students to use what they already know about programming in order to program in that new language that they were never explicitly taught. For me, that is my ultimate goal when tutoring my programming students: giving them self-sufficiency in the fundamentals of computer programming.