38 votes
Accepted

Is it a good idea to teach algorithm courses using pseudocode instead of a real programming language?

Similar to @Vince, I think it's a good practice to do both. I don't really agree with the cooking recipe analogy, though. Pseudocode describes that the algorithm does, without going into detail how ...
user avatar
  • 496
36 votes
Accepted

When mentoring individuals, teach clean coding and simple/effective thinking or let them do it their way?

As someone who has now taught CS for many years, let me first reassure you that teaching clear, clean coding is entirely worthwhile. I think this is especially true for those who will not go off into ...
user avatar
  • 31.5k
32 votes

Teaching algorithmic thinking without a programming language

When I attended a Mind, Brain, and Learning conference a few years ago, a lecturer posed the following question (paraphrased): If I ask you to figure out the cube root of a number like 150 in your ...
user avatar
  • 31.5k
26 votes

Is it a good idea to teach algorithm courses using pseudocode instead of a real programming language?

Actually I am of the opinion that you should not present your own code, but rather get the students to implement the algorithms you teach them, which you give in pseudocode, and give them the freedom ...
user avatar
  • 357
18 votes

How can I help my students to think algorithmically?

Rather than giving them processes to model algorithmically, have them start coming up with algorithms for everyday activities. Here is the formal assignment I have students complete: CS50 AP - ...
user avatar
  • 9,032
14 votes

How can I help my students to think algorithmically?

How do you teach students of this age and ability to think algorithmically? I don't really think there's a silver bullet to this problem. To be able to think algorithmically, you need to solve lots ...
user avatar
  • 3,485
13 votes

A real world example for the divide and conquer method

Back around 1985, Susan Merritt created an Inverted Taxonomy of Sorting Algorithms. The idea is that to sort an array you have two phases, the split phase and the join phase. She divided the various ...
user avatar
  • 34.9k
10 votes
Accepted

Pseudocode or Flowcharts?

Neither is always better, and both have their strengths. The idea of scoring higher marks as a criteria for better is going to be unpredictable without knowing who is granting those marks. Someone ...
user avatar
9 votes
Accepted

Will you tell students that Algorithms + Data Structures = Programs now(21st century)?

The Wirth formula, Algorithms + Data Structures = Programs is still valid. It is also complete. A program is nothing more than algorithms acting on data structures. That formula does not make explicit ...
user avatar
9 votes

Difficulty of algorithms homework problems

Homework problems in algorithms classes often involve finding clever tricks that the professors find elegant or interesting That seems like a strange way of teaching algorithms. It shouldn't involve ...
user avatar
  • 296
9 votes

Pedagogical issues with Stack Implementation

Actually, the code is terrible, but I don't think its purpose is to illustrate a stack so much as to illustrate in a very rudimentary way how heap allocation works. (Worse than "terrible", it isn't "...
user avatar
  • 34.9k
9 votes

Teaching algorithmic thinking without a programming language

About 20 years ago, I interviewed at a rather well known American software company. I met with about a dozen people over a day that lasted from 8:30 to 4:30. One of the questions was to come up with ...
user avatar
  • 191
8 votes

How can I help my students to think algorithmically?

I remember a demonstration from early in my first college CS course (this was in 1998, almost 20 years ago!), where the professor brought in a loaf of bread, a butter knife, a jar of peanut butter, ...
user avatar
8 votes

What are effective approaches for teaching dynamic programming?

I think it's really about breaking down the concepts into smaller pieces. First a student needs to understand recursion well, then they can understand memoization and dynamic programming. It's hard to ...
user avatar
  • 201
7 votes

Introducing A* Search Algorithm

I usually teach Uniform Cost Search (UCS) before A*, since it is basicaly A* without the heuristic (and it reduces to BFS when all costs = 1, so it is pretty straightforward to explain). Then I teach ...
user avatar
  • 268
7 votes

How can I help my students to think algorithmically?

The problem as described is simply translation from one firm of words to another, so in some senses, students may not really grasp what you are asking for. I think a more important thing to ask for is ...
user avatar
7 votes

How can I help my students to think algorithmically?

Thinking algorithmically isn't always natural. In an algorithm, you're going to write down everything the computer is going to, then hit "go" and step away for a few microseconds while the computer ...
user avatar
  • 1,031
7 votes

How can I help my students to think algorithmically?

I'm a bit confused by your question. Your exercise seems to involve some combination of… Requirements gathering: what are the inputs, outputs, and formulas? Translating the requirements to a ...
user avatar
7 votes

How can I help my students to think algorithmically?

Since all the other great answers are all given, let me mention a minor one. Lateral thinking Puzzles are good for this. They help to teach children to think in a different manner by themselves and ...
user avatar
  • 281
7 votes

Single-dimensional array and simple looping activities of significance

The Dutch National Flag problem is linear in running time. Essentially sort an array with only 3 distinct values each of which may appear 0 or more times. (not length 3). You are allowed only one pass ...
user avatar
  • 34.9k
7 votes

Single-dimensional array and simple looping activities of significance

A variant on the ENIGMA machine encryption works well in a single loop, and is sufficiently complex to give students a real challenge. The core idea of the ENIGMA machine for this assignment is that (...
user avatar
  • 31.5k
7 votes

A real world example for the divide and conquer method

The simplest example that still bears enough complexity to show what's going on is probably merge sort. It's no coincidence that this algorithm is the classical example to begin explaining the divide ...
user avatar
  • 31.5k
7 votes

When mentoring individuals, teach clean coding and simple/effective thinking or let them do it their way?

I emphasize readability and maintenance of code. Therefore, I will assign a project and later turn around and require another student to complete the second half of it. Everyone ends up maintaining ...
user avatar
  • 283
7 votes

Teaching algorithmic thinking without a programming language

When I was about eight years old, my teacher asked the class to describe fool-proof ways to make a cup of tea, or to strike a match then use it to light something like a gas-flame or a cigarette. How ...
user avatar
6 votes

How can I help my students to think algorithmically?

Sounds like you've tried everything already, but here are some suggestions: Use a scenario / problem that every student can relate to Most of my lower ability 13-14 year old boys don't have much ...
user avatar
  • 806
6 votes

How do I construct a basic lesson on computational complexity and undecidability?

The hard parts of this are hard for everyone, of course: P = NP (or not). But the others aren't too difficult to get across in a short period of time, especially if the students have something of a ...
user avatar
  • 34.9k
6 votes

Difficulty of algorithms homework problems

I had zero experience with algorithms when I started. Here are a couple of things I wish had been done differently. Let Students Make Mistakes My TAs and professors always tried to guide me to the ...
user avatar
6 votes

Is it a good idea to teach algorithm courses using pseudocode instead of a real programming language?

Pseudocode helps a lot by removing anything unnecessary, and focusing entirely on the algorithm, which can already be hard to understand as is. It's also faster to express ideas : if a student wants ...
user avatar
6 votes

Is it a good idea to teach algorithm courses using pseudocode instead of a real programming language?

One of the key points here is that you are teaching to future engineers, even if at academic level. The very nature of engineering is solving problems by implementing a solution. Therefore I think ...
user avatar

Only top scored, non community-wiki answers of a minimum length are eligible