Use the model of Towers of Hanoi in order to help students understand recursion. To demonstrate Towers of Hanoi, use three baby ring-stacking toys and the programming language Alice. Share Use the model of Towers of Hanoi in order to help students understand recursion. To demonstrate Towers of Hanoi, use three baby ring-stacking toys and the programming language Alice. with FacebookShare Use the model of Towers of Hanoi in order to help students understand recursion. To demonstrate Towers of Hanoi, use three baby ring-stacking toys and the programming language Alice. with Twitter

Have students decompose problems in a more structured way by acting as project managers who need to build teams (of methods and classes) and divide the work amongst them in a clearly organized manner. Share Have students decompose problems in a more structured way by acting as project managers who need to build teams (of methods and classes) and divide the work amongst them in a clearly organized manner. with FacebookShare Have students decompose problems in a more structured way by acting as project managers who need to build teams (of methods and classes) and divide the work amongst them in a clearly organized manner. with Twitter

Use SRec, a recursion visualization tool, in your introductory Java courses to help students conceptualize the recursive algorithms they write. Share Use SRec, a recursion visualization tool, in your introductory Java courses to help students conceptualize the recursive algorithms they write. with FacebookShare Use SRec, a recursion visualization tool, in your introductory Java courses to help students conceptualize the recursive algorithms they write. with Twitter

Run a pair programming contest in Python to motivate, challenge, and boost students’ self-confidence. Share Run a pair programming contest in Python to motivate, challenge, and boost students’ self-confidence. with FacebookShare Run a pair programming contest in Python to motivate, challenge, and boost students’ self-confidence. with Twitter

Have students write a program that constructs an n x n Magic Square in Java so they gain practice working with bounds in 2D arrays. Share Have students write a program that constructs an n x n Magic Square in Java so they gain practice working with bounds in 2D arrays. with FacebookShare Have students write a program that constructs an n x n Magic Square in Java so they gain practice working with bounds in 2D arrays. with Twitter

Use different methods of counting the stairs of the Eiffel Tower to explain how different algorithms affect Big-O runtime. Share Use different methods of counting the stairs of the Eiffel Tower to explain how different algorithms affect Big-O runtime. with FacebookShare Use different methods of counting the stairs of the Eiffel Tower to explain how different algorithms affect Big-O runtime. with Twitter

Introduce Big-O using iteration rather than recursion to make this important concept easier for students to understand. Share Introduce Big-O using iteration rather than recursion to make this important concept easier for students to understand. with FacebookShare Introduce Big-O using iteration rather than recursion to make this important concept easier for students to understand. with Twitter

Have students use lollipop sticks or toothpicks to represent each statement call in an N-ary recursive algorithm. Share Have students use lollipop sticks or toothpicks to represent each statement call in an N-ary recursive algorithm. with FacebookShare Have students use lollipop sticks or toothpicks to represent each statement call in an N-ary recursive algorithm. with Twitter

Provide students with an algorithm which is written in everyday language and have students write pseudocode in order to help them practice the process of translating the ideas in their heads into code. Share Provide students with an algorithm which is written in everyday language and have students write pseudocode in order to help them practice the process of translating the ideas in their heads into code. with FacebookShare Provide students with an algorithm which is written in everyday language and have students write pseudocode in order to help them practice the process of translating the ideas in their heads into code. with Twitter

Use the "PB&J" sandwich activity to introduce important components of algorithms. Share Use the "PB&J" sandwich activity to introduce important components of algorithms. with FacebookShare Use the "PB&J" sandwich activity to introduce important components of algorithms. with Twitter

When teaching introductory courses, teach students to use “top-down thinking” and “bottom-up implementation.” Share When teaching introductory courses, teach students to use “top-down thinking” and “bottom-up implementation.” with FacebookShare When teaching introductory courses, teach students to use “top-down thinking” and “bottom-up implementation.” with Twitter

Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime. Share Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime. with FacebookShare Often, intuitive examples trump overly-technical description for introductions to tricky concepts such as Big-O runtime. with Twitter

Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete. Share Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete. with FacebookShare Use graphs, visualizations, and examples to help make seemingly ‘ill-defined’ topics like Big-O feel more concrete. with Twitter

Do not have students write code for common algorithms. Instead, incorporate common algorithms into your class in novel course-specific variants Share Do not have students write code for common algorithms. Instead, incorporate common algorithms into your class in novel course-specific variants with FacebookShare Do not have students write code for common algorithms. Instead, incorporate common algorithms into your class in novel course-specific variants with Twitter

Students often get stuck because they start working on a problem without thinking about what they need to know and do in order to get a working solution. Share Students often get stuck because they start working on a problem without thinking about what they need to know and do in order to get a working solution. with FacebookShare Students often get stuck because they start working on a problem without thinking about what they need to know and do in order to get a working solution. with Twitter

Even if students are developing useful strategies for problem solving, they can be easily discouraged if they don’t see immediate, good results. Share Even if students are developing useful strategies for problem solving, they can be easily discouraged if they don’t see immediate, good results. with FacebookShare Even if students are developing useful strategies for problem solving, they can be easily discouraged if they don’t see immediate, good results. with Twitter

Remind students about steps of the problem-solving process as they develop algorithms to solve programming problems. Share Remind students about steps of the problem-solving process as they develop algorithms to solve programming problems. with FacebookShare Remind students about steps of the problem-solving process as they develop algorithms to solve programming problems. with Twitter

To show that algorithm design is difficult, have students write algorithms, exchange their work, and then attempt to execute each others instructions. Share To show that algorithm design is difficult, have students write algorithms, exchange their work, and then attempt to execute each others instructions. with FacebookShare To show that algorithm design is difficult, have students write algorithms, exchange their work, and then attempt to execute each others instructions. with Twitter

Have students work in small groups to solve logic puzzles so they develop algorithmic thinking and good problem-solving habits. Share Have students work in small groups to solve logic puzzles so they develop algorithmic thinking and good problem-solving habits. with FacebookShare Have students work in small groups to solve logic puzzles so they develop algorithmic thinking and good problem-solving habits. with Twitter

Remind students how important creating proposals and design documents is for efficiently writing good code in less time. Share Remind students how important creating proposals and design documents is for efficiently writing good code in less time. with FacebookShare Remind students how important creating proposals and design documents is for efficiently writing good code in less time. with Twitter