Coding to Think:Teaching Algorithmic Thinking from Idea to Code - Tranquillo, Joe (Journal of Engineering Education Transformations, 2015)
Engineering computing is a topic that nearly all engineering departments include in their curricula. Yet, the pedagogical goals of a computing course are necessarily split between code as a means of learning higher level math, code as a specific tool in design and research, and code as a way to learn algorithmic thinking. Learning more advanced applied math is typically learned through the traditional lecture/homework/test format, whereas learning the syntax of a particular language is most often taught through short programming assignments. This paper introduces Coding to Think as a way to teach algorithmic thinking that builds off of the Writing to Think movement in the Humanities. This technique is very well suited to long-term proj ects as it provides an opportunity to focus on deeper and more complex algorithmic thinking. The semester-long project presented is motivated by three guiding learning outcomes: 1) To program at a level of complexity that requires planning, iteration, encapsulation and documentation, 2) To move from Idea to Code (a phrase that is mentioned in class at least once a week) and 3) To articulate and put into practice the power of a computing language that can do more than a calculator or Excel. The seven project assignments that lead students from an initial idea to final code are detailed, as well as an assessment of outcomes, student and faculty comments, suggested improvements and adaptations and ABET assessment measures.