Is it a good idea to teach algorithm courses using pseudocode instead of a real programming language?GOTO statement in programming environments for beginners?How can I write this backtracking algorithm using dynamic programming?

What should I wear to go and sign an employment contract?

What is the probability that two cards drawn from a deck are both face cards and at least one is red?

Why didn't Daenerys' advisers suggest assassinating Cersei?

Good examples of "two is easy, three is hard" in computational sciences

Pedaling at different gear ratios on flat terrain: what's the point?

What color to choose as "danger" if the main color of my app is red

Are there any crystals that are theoretically possible, but haven't yet been made?

What would be the game balance implications for using the Gygax method for applying falling damage?

Windows reverting changes made by Linux to FAT32 partion

Can the Gate spell draw a creature larger that 20 feet in every dimension through the portal it creates?

How many Dothraki are left as of Game of Thrones S8E5?

Hotel booking: Why is Agoda much cheaper than booking.com?

Why use a retrograde orbit?

Alternative classical explanation of the Stern-Gerlach Experiment?

Save my secrets!

how to create an executable file for an AppleScript?

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

How come Arya Stark wasn't hurt by this in Game of Thrones Season 8 Episode 5?

Who is frowning in the sentence "Daisy looked at Tom frowning"?

Can I get the output of a command line program with TeX (using e.g. read18)?

Should all adjustments be random effects in a mixed linear effect?

How was the blinking terminal cursor invented?

Quotient of Three Dimensional Torus by Permutation on Coordinates

How does this piece of code determine array size without using sizeof( )?



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


GOTO statement in programming environments for beginners?How can I write this backtracking algorithm using dynamic programming?













8












$begingroup$


I am a young professor teaching a data structures course for the first time. I'm teaching at an engineering college that provides an academic degree, but the focus is preparing future computer programmers, not academics.



Before the start of the semester I decided to present the algorithms as java code, instead of pseudocode. I felt that this would make the presentation more precise, and show the students how to put these algorithms to practical use.



My experience has been mixed. It seems like the problem is that now the students think that the various algorithms are the java code. They are complaining that, for example, I can't possibly expect them to know the counting sort algorithm, because how can they be expected to learn code by heart? So I am starting to understand the wisdom of using pseudocode.



My question, intended for other teachers, is: What has been your experience when using pseudocode vs using code?










share|cite|improve this question











$endgroup$


We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.









  • 17




    $begingroup$
    I wonder if this question would receive even more attention on CS Educators SE.
    $endgroup$
    – Juho
    21 hours ago






  • 5




    $begingroup$
    @Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
    $endgroup$
    – Hendrik Jan
    19 hours ago






  • 5




    $begingroup$
    This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
    $endgroup$
    – Giacomo Alzetta
    18 hours ago






  • 1




    $begingroup$
    "What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
    $endgroup$
    – Raphael
    8 hours ago






  • 1




    $begingroup$
    You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
    $endgroup$
    – Raphael
    8 hours ago















8












$begingroup$


I am a young professor teaching a data structures course for the first time. I'm teaching at an engineering college that provides an academic degree, but the focus is preparing future computer programmers, not academics.



Before the start of the semester I decided to present the algorithms as java code, instead of pseudocode. I felt that this would make the presentation more precise, and show the students how to put these algorithms to practical use.



My experience has been mixed. It seems like the problem is that now the students think that the various algorithms are the java code. They are complaining that, for example, I can't possibly expect them to know the counting sort algorithm, because how can they be expected to learn code by heart? So I am starting to understand the wisdom of using pseudocode.



My question, intended for other teachers, is: What has been your experience when using pseudocode vs using code?










share|cite|improve this question











$endgroup$


We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.









  • 17




    $begingroup$
    I wonder if this question would receive even more attention on CS Educators SE.
    $endgroup$
    – Juho
    21 hours ago






  • 5




    $begingroup$
    @Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
    $endgroup$
    – Hendrik Jan
    19 hours ago






  • 5




    $begingroup$
    This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
    $endgroup$
    – Giacomo Alzetta
    18 hours ago






  • 1




    $begingroup$
    "What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
    $endgroup$
    – Raphael
    8 hours ago






  • 1




    $begingroup$
    You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
    $endgroup$
    – Raphael
    8 hours ago













8












8








8


2



$begingroup$


I am a young professor teaching a data structures course for the first time. I'm teaching at an engineering college that provides an academic degree, but the focus is preparing future computer programmers, not academics.



Before the start of the semester I decided to present the algorithms as java code, instead of pseudocode. I felt that this would make the presentation more precise, and show the students how to put these algorithms to practical use.



My experience has been mixed. It seems like the problem is that now the students think that the various algorithms are the java code. They are complaining that, for example, I can't possibly expect them to know the counting sort algorithm, because how can they be expected to learn code by heart? So I am starting to understand the wisdom of using pseudocode.



My question, intended for other teachers, is: What has been your experience when using pseudocode vs using code?










share|cite|improve this question











$endgroup$




I am a young professor teaching a data structures course for the first time. I'm teaching at an engineering college that provides an academic degree, but the focus is preparing future computer programmers, not academics.



Before the start of the semester I decided to present the algorithms as java code, instead of pseudocode. I felt that this would make the presentation more precise, and show the students how to put these algorithms to practical use.



My experience has been mixed. It seems like the problem is that now the students think that the various algorithms are the java code. They are complaining that, for example, I can't possibly expect them to know the counting sort algorithm, because how can they be expected to learn code by heart? So I am starting to understand the wisdom of using pseudocode.



My question, intended for other teachers, is: What has been your experience when using pseudocode vs using code?







algorithms education pseudocode






share|cite|improve this question















share|cite|improve this question













share|cite|improve this question




share|cite|improve this question








edited 24 mins ago









Oliphaunt

1072




1072










asked 21 hours ago









Zur LuriaZur Luria

24426




24426



We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.




We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.








  • 17




    $begingroup$
    I wonder if this question would receive even more attention on CS Educators SE.
    $endgroup$
    – Juho
    21 hours ago






  • 5




    $begingroup$
    @Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
    $endgroup$
    – Hendrik Jan
    19 hours ago






  • 5




    $begingroup$
    This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
    $endgroup$
    – Giacomo Alzetta
    18 hours ago






  • 1




    $begingroup$
    "What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
    $endgroup$
    – Raphael
    8 hours ago






  • 1




    $begingroup$
    You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
    $endgroup$
    – Raphael
    8 hours ago












  • 17




    $begingroup$
    I wonder if this question would receive even more attention on CS Educators SE.
    $endgroup$
    – Juho
    21 hours ago






  • 5




    $begingroup$
    @Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
    $endgroup$
    – Hendrik Jan
    19 hours ago






  • 5




    $begingroup$
    This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
    $endgroup$
    – Giacomo Alzetta
    18 hours ago






  • 1




    $begingroup$
    "What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
    $endgroup$
    – Raphael
    8 hours ago






  • 1




    $begingroup$
    You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
    $endgroup$
    – Raphael
    8 hours ago







17




17




$begingroup$
I wonder if this question would receive even more attention on CS Educators SE.
$endgroup$
– Juho
21 hours ago




$begingroup$
I wonder if this question would receive even more attention on CS Educators SE.
$endgroup$
– Juho
21 hours ago




5




5




$begingroup$
@Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
$endgroup$
– Hendrik Jan
19 hours ago




$begingroup$
@Juho Definitely! See for example Is there any value in teaching pseudo code? and Should the first Programming/Algorithms class be taught in pseudo-code?
$endgroup$
– Hendrik Jan
19 hours ago




5




5




$begingroup$
This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
$endgroup$
– Giacomo Alzetta
18 hours ago




$begingroup$
This is a symptom of a failure in earlier education... an university student ought to know how to abstract ideas. Whatever choice you take you are probably still going to have troubles with these students. I don't think simply using both as @Art says would help them... you probably need to show them both and also the translation between the two... basically teach them the concretization of an algorithm from pseudo code to implementation code and abstraction of an algorithm from implementation code to pseudo code.
$endgroup$
– Giacomo Alzetta
18 hours ago




1




1




$begingroup$
"What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
$endgroup$
– Raphael
8 hours ago




$begingroup$
"What has been your experience when using pseudocode vs using code?" -- this is going to get you a list of singular opinions. I recommend you ask for solid evidence instead, e.g. in the form of scientific studies.
$endgroup$
– Raphael
8 hours ago




1




1




$begingroup$
You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
$endgroup$
– Raphael
8 hours ago




$begingroup$
You don't say what your teaching goals are beyond the topic of the course. Those will heavily influence any didactic choice, and may just make the difference here. The background and focus of your students is also relevant, as is the form of exam you're going to hold. Say, some students know Java, others Python, and some C++. How fair is an exam requiring Java skills? How do Java skills reflect on their data structure expertise?
$endgroup$
– Raphael
8 hours ago










7 Answers
7






active

oldest

votes


















15












$begingroup$

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 you do it.



I think perhaps a better analogy:



  • Pseudocode: you need to put an egg into the flour mixture

  • Actual code: pick up an egg, crack it open on the side of the bowl, and drop the egg into the container. Don't forget you need to dispose the egg shell as well.

There are so many ways to accomplish the task, and the actual code just gives the student an example of how to do it.



Presenting only the pseudocode might make some of your students loss. Presenting only the actual code would keep them in the box and get them focused too much on the details. A mixture of both would be my choice.






share|cite|improve this answer








New contributor



Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





$endgroup$








  • 19




    $begingroup$
    Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
    $endgroup$
    – David Richerby
    20 hours ago






  • 7




    $begingroup$
    @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
    $endgroup$
    – MSalters
    16 hours ago






  • 4




    $begingroup$
    Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
    $endgroup$
    – Art
    16 hours ago






  • 2




    $begingroup$
    @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
    $endgroup$
    – David Richerby
    13 hours ago






  • 1




    $begingroup$
    @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
    $endgroup$
    – jpmc26
    4 hours ago


















9












$begingroup$

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 to choose any one of a fixed set of languages that you are familiar with, such as C++/Java/Python. Really, the only way students can truly understand an algorithm is when they face the real task of implementing it, but the key ideas behind an algorithm can be sufficiently conveyed via pseudocode.






share|cite|improve this answer









$endgroup$












  • $begingroup$
    And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
    $endgroup$
    – Marc.2377
    5 hours ago


















4












$begingroup$

I understand your dilemma, but from a general pov it's better to present content through pseudocode. This actually gives students the freedom to explore multiple languages. When you present your code in a particular language you are making them comfortable with that language alone and they might find it hard to shift to other languages later on. The main purpose of learning algorithms is to know how they work rather than implementing them in a particular language. Regarding resources, I would suggest looking up books like Introduction to Algorithms. You can also refer to CodeMonk which is an online portal which has a collection of all known problems and algorithms to look into.






share|cite|improve this answer








New contributor



Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





$endgroup$












  • $begingroup$
    “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
    $endgroup$
    – Michael
    18 hours ago


















4












$begingroup$

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 that presenting the pseudocode is useful to give your student the correct theoretical POV to frame the problem, BUT showing them an actual, working implementation is key to make them develop their engineering skills.



Much better would be to show them the pseudocode and make them try to come up with an implementation first, then show them yours. But this requires honing their skills first, probably.



As their skills improve, you may also dare show them more than one implementation, possibly in two or more languages. Of course this depends on their actual knowledge of the languages you are going to use. If they know only, say, Java, showing them an additional implementation in another language could backfire and confuse them more.



Of course, I'm assuming that it's not your duty to teach them another computer language, otherwise, it could be a useful approach: start with pseudocode, show a reference implementation in a known language (e.g. Java) and finally show them how to reimplement the algorithm in the new language they must learn.






share|cite|improve this answer










New contributor



Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





$endgroup$




















    1












    $begingroup$

    I think the best is to do a comparison. The algorithm may be a cooking recipe that may be written in many languages but produce always the same cake.



    Pseudo-code is like describing the recipe with pictures. There is not a unique grammar or way to "talk" in pseudo-code but anyone should be able to interpret it. By reading the pseudo-code written by someone, one may often guess what is his favorite language. The main rule is to forbid the language specific keywords.



    Teaching an algorithm in a specific language is not a problem in my opinion as long as anyone understand it. But if you want someone to master this algorithm, you have to make him try it by hand. Make him do the different steps of the algorithm on a small example. In fact it is again like cooking the cake... You can remember a recipe much easier if you actually have cooked it.






    share|cite|improve this answer









    $endgroup$




















      1












      $begingroup$

      1. 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 to write a different algorithm than the one you taught them, it can be really cumbersome if they have to deal with every details of Java.


      2. As other said it, it's good for student to come up with they own implementation in code of the pseudo-code algorithm. They need to really understand it, while if they just paste code or learn it by heart they won't necessarily understand every subtlety.


      I think most universities do this already (mine did), but I think the best is pseudocode for the course, and real code for practical exercises.






      share|cite|improve this answer








      New contributor



      Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      $endgroup$




















        0












        $begingroup$

        Neither alone is enough for a good dish.



        I'd go with pseudo code in the lecture, and use homework to give students practice in turning pseudo code into real code.



        Using pseudo code in the lecture has the pragmatic reason that pseudo code is, by nature, somehow vague. You want to use it as a tool to be able to concisely state ideas that still contain all important details, but abstract as many of the unimportant ones away.



        Because of this, it takes some time to gauge, as a student, how pseudo your pseudo code actually is allowed to be:

        As an example, at the start of the course, pseudo code shouldn't involve a (merge-)sort, but once you're done with that chapter, there's no harm in adding the line "sort the array A" without further explanation.



        Therefore I'd say that the easiest way for a student to learn what is, and what is not, allowed in pseudo code, is by getting a feel for it, simply by osmosis over time.



        And if some students have problems understanding your pseudo code, then they still have enough resources (books, or even interactive coding sessions of the algorithm) showing them how the algorithms would look like in an actual programming language.



        On the other hand, to understand the design and working of an algorithm, it helps immensely to have coded it yourself, at least partially, once.

        Therefore, by letting your students program the algorithm (or letting them finish a partially programmed algorithm) and then tasking them to "play with it", they'll get a good look on the other side of the medal as well.






        share|cite|improve this answer









        $endgroup$













          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "419"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f109407%2fis-it-a-good-idea-to-teach-algorithm-courses-using-pseudocode-instead-of-a-real%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          7 Answers
          7






          active

          oldest

          votes








          7 Answers
          7






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          15












          $begingroup$

          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 you do it.



          I think perhaps a better analogy:



          • Pseudocode: you need to put an egg into the flour mixture

          • Actual code: pick up an egg, crack it open on the side of the bowl, and drop the egg into the container. Don't forget you need to dispose the egg shell as well.

          There are so many ways to accomplish the task, and the actual code just gives the student an example of how to do it.



          Presenting only the pseudocode might make some of your students loss. Presenting only the actual code would keep them in the box and get them focused too much on the details. A mixture of both would be my choice.






          share|cite|improve this answer








          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$








          • 19




            $begingroup$
            Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
            $endgroup$
            – David Richerby
            20 hours ago






          • 7




            $begingroup$
            @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
            $endgroup$
            – MSalters
            16 hours ago






          • 4




            $begingroup$
            Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
            $endgroup$
            – Art
            16 hours ago






          • 2




            $begingroup$
            @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
            $endgroup$
            – David Richerby
            13 hours ago






          • 1




            $begingroup$
            @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
            $endgroup$
            – jpmc26
            4 hours ago















          15












          $begingroup$

          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 you do it.



          I think perhaps a better analogy:



          • Pseudocode: you need to put an egg into the flour mixture

          • Actual code: pick up an egg, crack it open on the side of the bowl, and drop the egg into the container. Don't forget you need to dispose the egg shell as well.

          There are so many ways to accomplish the task, and the actual code just gives the student an example of how to do it.



          Presenting only the pseudocode might make some of your students loss. Presenting only the actual code would keep them in the box and get them focused too much on the details. A mixture of both would be my choice.






          share|cite|improve this answer








          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$








          • 19




            $begingroup$
            Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
            $endgroup$
            – David Richerby
            20 hours ago






          • 7




            $begingroup$
            @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
            $endgroup$
            – MSalters
            16 hours ago






          • 4




            $begingroup$
            Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
            $endgroup$
            – Art
            16 hours ago






          • 2




            $begingroup$
            @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
            $endgroup$
            – David Richerby
            13 hours ago






          • 1




            $begingroup$
            @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
            $endgroup$
            – jpmc26
            4 hours ago













          15












          15








          15





          $begingroup$

          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 you do it.



          I think perhaps a better analogy:



          • Pseudocode: you need to put an egg into the flour mixture

          • Actual code: pick up an egg, crack it open on the side of the bowl, and drop the egg into the container. Don't forget you need to dispose the egg shell as well.

          There are so many ways to accomplish the task, and the actual code just gives the student an example of how to do it.



          Presenting only the pseudocode might make some of your students loss. Presenting only the actual code would keep them in the box and get them focused too much on the details. A mixture of both would be my choice.






          share|cite|improve this answer








          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$



          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 you do it.



          I think perhaps a better analogy:



          • Pseudocode: you need to put an egg into the flour mixture

          • Actual code: pick up an egg, crack it open on the side of the bowl, and drop the egg into the container. Don't forget you need to dispose the egg shell as well.

          There are so many ways to accomplish the task, and the actual code just gives the student an example of how to do it.



          Presenting only the pseudocode might make some of your students loss. Presenting only the actual code would keep them in the box and get them focused too much on the details. A mixture of both would be my choice.







          share|cite|improve this answer








          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.








          share|cite|improve this answer



          share|cite|improve this answer






          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.








          answered 21 hours ago









          ArtArt

          1762




          1762




          New contributor



          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




          New contributor




          Art is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.









          • 19




            $begingroup$
            Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
            $endgroup$
            – David Richerby
            20 hours ago






          • 7




            $begingroup$
            @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
            $endgroup$
            – MSalters
            16 hours ago






          • 4




            $begingroup$
            Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
            $endgroup$
            – Art
            16 hours ago






          • 2




            $begingroup$
            @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
            $endgroup$
            – David Richerby
            13 hours ago






          • 1




            $begingroup$
            @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
            $endgroup$
            – jpmc26
            4 hours ago












          • 19




            $begingroup$
            Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
            $endgroup$
            – David Richerby
            20 hours ago






          • 7




            $begingroup$
            @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
            $endgroup$
            – MSalters
            16 hours ago






          • 4




            $begingroup$
            Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
            $endgroup$
            – Art
            16 hours ago






          • 2




            $begingroup$
            @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
            $endgroup$
            – David Richerby
            13 hours ago






          • 1




            $begingroup$
            @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
            $endgroup$
            – jpmc26
            4 hours ago







          19




          19




          $begingroup$
          Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
          $endgroup$
          – David Richerby
          20 hours ago




          $begingroup$
          Don't crack the egg on the side of the bowl: that risks getting shell in your batter, which is a pain to get out again. And this is exactly why actual code is bad for teaching -- arguments about irrelevant details take over.
          $endgroup$
          – David Richerby
          20 hours ago




          7




          7




          $begingroup$
          @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
          $endgroup$
          – MSalters
          16 hours ago




          $begingroup$
          @DavidRicherby: Isn't your example proving the exact opposite, that actual code is useful for teaching actual skills? In pseudo-code, it's easy to ignore edge cases like the empty collection and the collection with one element.
          $endgroup$
          – MSalters
          16 hours ago




          4




          4




          $begingroup$
          Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
          $endgroup$
          – Art
          16 hours ago




          $begingroup$
          Depends on which "skill" you wanna have the students practice I guess. I'd imagine that these students preparing to become a programmer would have other project courses to practice on coding already.
          $endgroup$
          – Art
          16 hours ago




          2




          2




          $begingroup$
          @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
          $endgroup$
          – David Richerby
          13 hours ago




          $begingroup$
          @MSalters There are multiple skills, and it's usually not a good idea to try to cover too many of them at once. In an algorithms course, the focus is on algorithms, not coding; in a creative writing course, the focus is on expression, not handwriting; etc.
          $endgroup$
          – David Richerby
          13 hours ago




          1




          1




          $begingroup$
          @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
          $endgroup$
          – jpmc26
          4 hours ago




          $begingroup$
          @DavidRicherby Most people in an algorithms course intend to actually write code for a living. There is no reason to deprive them of experience converting problem descriptions to actual code. The skill of making that translation is fundamental to being able to do much of anything useful in computing.
          $endgroup$
          – jpmc26
          4 hours ago











          9












          $begingroup$

          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 to choose any one of a fixed set of languages that you are familiar with, such as C++/Java/Python. Really, the only way students can truly understand an algorithm is when they face the real task of implementing it, but the key ideas behind an algorithm can be sufficiently conveyed via pseudocode.






          share|cite|improve this answer









          $endgroup$












          • $begingroup$
            And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
            $endgroup$
            – Marc.2377
            5 hours ago















          9












          $begingroup$

          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 to choose any one of a fixed set of languages that you are familiar with, such as C++/Java/Python. Really, the only way students can truly understand an algorithm is when they face the real task of implementing it, but the key ideas behind an algorithm can be sufficiently conveyed via pseudocode.






          share|cite|improve this answer









          $endgroup$












          • $begingroup$
            And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
            $endgroup$
            – Marc.2377
            5 hours ago













          9












          9








          9





          $begingroup$

          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 to choose any one of a fixed set of languages that you are familiar with, such as C++/Java/Python. Really, the only way students can truly understand an algorithm is when they face the real task of implementing it, but the key ideas behind an algorithm can be sufficiently conveyed via pseudocode.






          share|cite|improve this answer









          $endgroup$



          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 to choose any one of a fixed set of languages that you are familiar with, such as C++/Java/Python. Really, the only way students can truly understand an algorithm is when they face the real task of implementing it, but the key ideas behind an algorithm can be sufficiently conveyed via pseudocode.







          share|cite|improve this answer












          share|cite|improve this answer



          share|cite|improve this answer










          answered 17 hours ago









          user21820user21820

          21615




          21615











          • $begingroup$
            And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
            $endgroup$
            – Marc.2377
            5 hours ago
















          • $begingroup$
            And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
            $endgroup$
            – Marc.2377
            5 hours ago















          $begingroup$
          And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
          $endgroup$
          – Marc.2377
          5 hours ago




          $begingroup$
          And perhaps even more importantly, don't go about the entire course shoving one arbitrarily-chosen programming language down students' throats; specially not Java. That's very off-putting. I've seen complaints about this all too often.
          $endgroup$
          – Marc.2377
          5 hours ago











          4












          $begingroup$

          I understand your dilemma, but from a general pov it's better to present content through pseudocode. This actually gives students the freedom to explore multiple languages. When you present your code in a particular language you are making them comfortable with that language alone and they might find it hard to shift to other languages later on. The main purpose of learning algorithms is to know how they work rather than implementing them in a particular language. Regarding resources, I would suggest looking up books like Introduction to Algorithms. You can also refer to CodeMonk which is an online portal which has a collection of all known problems and algorithms to look into.






          share|cite|improve this answer








          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$












          • $begingroup$
            “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
            $endgroup$
            – Michael
            18 hours ago















          4












          $begingroup$

          I understand your dilemma, but from a general pov it's better to present content through pseudocode. This actually gives students the freedom to explore multiple languages. When you present your code in a particular language you are making them comfortable with that language alone and they might find it hard to shift to other languages later on. The main purpose of learning algorithms is to know how they work rather than implementing them in a particular language. Regarding resources, I would suggest looking up books like Introduction to Algorithms. You can also refer to CodeMonk which is an online portal which has a collection of all known problems and algorithms to look into.






          share|cite|improve this answer








          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$












          • $begingroup$
            “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
            $endgroup$
            – Michael
            18 hours ago













          4












          4








          4





          $begingroup$

          I understand your dilemma, but from a general pov it's better to present content through pseudocode. This actually gives students the freedom to explore multiple languages. When you present your code in a particular language you are making them comfortable with that language alone and they might find it hard to shift to other languages later on. The main purpose of learning algorithms is to know how they work rather than implementing them in a particular language. Regarding resources, I would suggest looking up books like Introduction to Algorithms. You can also refer to CodeMonk which is an online portal which has a collection of all known problems and algorithms to look into.






          share|cite|improve this answer








          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$



          I understand your dilemma, but from a general pov it's better to present content through pseudocode. This actually gives students the freedom to explore multiple languages. When you present your code in a particular language you are making them comfortable with that language alone and they might find it hard to shift to other languages later on. The main purpose of learning algorithms is to know how they work rather than implementing them in a particular language. Regarding resources, I would suggest looking up books like Introduction to Algorithms. You can also refer to CodeMonk which is an online portal which has a collection of all known problems and algorithms to look into.







          share|cite|improve this answer








          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.








          share|cite|improve this answer



          share|cite|improve this answer






          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.








          answered 21 hours ago









          Vikas ShettyVikas Shetty

          535




          535




          New contributor



          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




          New contributor




          Vikas Shetty is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.













          • $begingroup$
            “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
            $endgroup$
            – Michael
            18 hours ago
















          • $begingroup$
            “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
            $endgroup$
            – Michael
            18 hours ago















          $begingroup$
          “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
          $endgroup$
          – Michael
          18 hours ago




          $begingroup$
          “When you present your code in a particular language you are making them comfortable with that language alone” This can be an advantage if the students are currently learning the same language. Just don’t confuse them with features they haven’t used yet.
          $endgroup$
          – Michael
          18 hours ago











          4












          $begingroup$

          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 that presenting the pseudocode is useful to give your student the correct theoretical POV to frame the problem, BUT showing them an actual, working implementation is key to make them develop their engineering skills.



          Much better would be to show them the pseudocode and make them try to come up with an implementation first, then show them yours. But this requires honing their skills first, probably.



          As their skills improve, you may also dare show them more than one implementation, possibly in two or more languages. Of course this depends on their actual knowledge of the languages you are going to use. If they know only, say, Java, showing them an additional implementation in another language could backfire and confuse them more.



          Of course, I'm assuming that it's not your duty to teach them another computer language, otherwise, it could be a useful approach: start with pseudocode, show a reference implementation in a known language (e.g. Java) and finally show them how to reimplement the algorithm in the new language they must learn.






          share|cite|improve this answer










          New contributor



          Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.





          $endgroup$

















            4












            $begingroup$

            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 that presenting the pseudocode is useful to give your student the correct theoretical POV to frame the problem, BUT showing them an actual, working implementation is key to make them develop their engineering skills.



            Much better would be to show them the pseudocode and make them try to come up with an implementation first, then show them yours. But this requires honing their skills first, probably.



            As their skills improve, you may also dare show them more than one implementation, possibly in two or more languages. Of course this depends on their actual knowledge of the languages you are going to use. If they know only, say, Java, showing them an additional implementation in another language could backfire and confuse them more.



            Of course, I'm assuming that it's not your duty to teach them another computer language, otherwise, it could be a useful approach: start with pseudocode, show a reference implementation in a known language (e.g. Java) and finally show them how to reimplement the algorithm in the new language they must learn.






            share|cite|improve this answer










            New contributor



            Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.





            $endgroup$















              4












              4








              4





              $begingroup$

              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 that presenting the pseudocode is useful to give your student the correct theoretical POV to frame the problem, BUT showing them an actual, working implementation is key to make them develop their engineering skills.



              Much better would be to show them the pseudocode and make them try to come up with an implementation first, then show them yours. But this requires honing their skills first, probably.



              As their skills improve, you may also dare show them more than one implementation, possibly in two or more languages. Of course this depends on their actual knowledge of the languages you are going to use. If they know only, say, Java, showing them an additional implementation in another language could backfire and confuse them more.



              Of course, I'm assuming that it's not your duty to teach them another computer language, otherwise, it could be a useful approach: start with pseudocode, show a reference implementation in a known language (e.g. Java) and finally show them how to reimplement the algorithm in the new language they must learn.






              share|cite|improve this answer










              New contributor



              Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.





              $endgroup$



              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 that presenting the pseudocode is useful to give your student the correct theoretical POV to frame the problem, BUT showing them an actual, working implementation is key to make them develop their engineering skills.



              Much better would be to show them the pseudocode and make them try to come up with an implementation first, then show them yours. But this requires honing their skills first, probably.



              As their skills improve, you may also dare show them more than one implementation, possibly in two or more languages. Of course this depends on their actual knowledge of the languages you are going to use. If they know only, say, Java, showing them an additional implementation in another language could backfire and confuse them more.



              Of course, I'm assuming that it's not your duty to teach them another computer language, otherwise, it could be a useful approach: start with pseudocode, show a reference implementation in a known language (e.g. Java) and finally show them how to reimplement the algorithm in the new language they must learn.







              share|cite|improve this answer










              New contributor



              Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.








              share|cite|improve this answer



              share|cite|improve this answer








              edited 14 hours ago





















              New contributor



              Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.








              answered 14 hours ago









              Lorenzo DonatiLorenzo Donati

              1415




              1415




              New contributor



              Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.




              New contributor




              Lorenzo Donati is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.























                  1












                  $begingroup$

                  I think the best is to do a comparison. The algorithm may be a cooking recipe that may be written in many languages but produce always the same cake.



                  Pseudo-code is like describing the recipe with pictures. There is not a unique grammar or way to "talk" in pseudo-code but anyone should be able to interpret it. By reading the pseudo-code written by someone, one may often guess what is his favorite language. The main rule is to forbid the language specific keywords.



                  Teaching an algorithm in a specific language is not a problem in my opinion as long as anyone understand it. But if you want someone to master this algorithm, you have to make him try it by hand. Make him do the different steps of the algorithm on a small example. In fact it is again like cooking the cake... You can remember a recipe much easier if you actually have cooked it.






                  share|cite|improve this answer









                  $endgroup$

















                    1












                    $begingroup$

                    I think the best is to do a comparison. The algorithm may be a cooking recipe that may be written in many languages but produce always the same cake.



                    Pseudo-code is like describing the recipe with pictures. There is not a unique grammar or way to "talk" in pseudo-code but anyone should be able to interpret it. By reading the pseudo-code written by someone, one may often guess what is his favorite language. The main rule is to forbid the language specific keywords.



                    Teaching an algorithm in a specific language is not a problem in my opinion as long as anyone understand it. But if you want someone to master this algorithm, you have to make him try it by hand. Make him do the different steps of the algorithm on a small example. In fact it is again like cooking the cake... You can remember a recipe much easier if you actually have cooked it.






                    share|cite|improve this answer









                    $endgroup$















                      1












                      1








                      1





                      $begingroup$

                      I think the best is to do a comparison. The algorithm may be a cooking recipe that may be written in many languages but produce always the same cake.



                      Pseudo-code is like describing the recipe with pictures. There is not a unique grammar or way to "talk" in pseudo-code but anyone should be able to interpret it. By reading the pseudo-code written by someone, one may often guess what is his favorite language. The main rule is to forbid the language specific keywords.



                      Teaching an algorithm in a specific language is not a problem in my opinion as long as anyone understand it. But if you want someone to master this algorithm, you have to make him try it by hand. Make him do the different steps of the algorithm on a small example. In fact it is again like cooking the cake... You can remember a recipe much easier if you actually have cooked it.






                      share|cite|improve this answer









                      $endgroup$



                      I think the best is to do a comparison. The algorithm may be a cooking recipe that may be written in many languages but produce always the same cake.



                      Pseudo-code is like describing the recipe with pictures. There is not a unique grammar or way to "talk" in pseudo-code but anyone should be able to interpret it. By reading the pseudo-code written by someone, one may often guess what is his favorite language. The main rule is to forbid the language specific keywords.



                      Teaching an algorithm in a specific language is not a problem in my opinion as long as anyone understand it. But if you want someone to master this algorithm, you have to make him try it by hand. Make him do the different steps of the algorithm on a small example. In fact it is again like cooking the cake... You can remember a recipe much easier if you actually have cooked it.







                      share|cite|improve this answer












                      share|cite|improve this answer



                      share|cite|improve this answer










                      answered 21 hours ago









                      VinceVince

                      788210




                      788210





















                          1












                          $begingroup$

                          1. 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 to write a different algorithm than the one you taught them, it can be really cumbersome if they have to deal with every details of Java.


                          2. As other said it, it's good for student to come up with they own implementation in code of the pseudo-code algorithm. They need to really understand it, while if they just paste code or learn it by heart they won't necessarily understand every subtlety.


                          I think most universities do this already (mine did), but I think the best is pseudocode for the course, and real code for practical exercises.






                          share|cite|improve this answer








                          New contributor



                          Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.





                          $endgroup$

















                            1












                            $begingroup$

                            1. 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 to write a different algorithm than the one you taught them, it can be really cumbersome if they have to deal with every details of Java.


                            2. As other said it, it's good for student to come up with they own implementation in code of the pseudo-code algorithm. They need to really understand it, while if they just paste code or learn it by heart they won't necessarily understand every subtlety.


                            I think most universities do this already (mine did), but I think the best is pseudocode for the course, and real code for practical exercises.






                            share|cite|improve this answer








                            New contributor



                            Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                            Check out our Code of Conduct.





                            $endgroup$















                              1












                              1








                              1





                              $begingroup$

                              1. 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 to write a different algorithm than the one you taught them, it can be really cumbersome if they have to deal with every details of Java.


                              2. As other said it, it's good for student to come up with they own implementation in code of the pseudo-code algorithm. They need to really understand it, while if they just paste code or learn it by heart they won't necessarily understand every subtlety.


                              I think most universities do this already (mine did), but I think the best is pseudocode for the course, and real code for practical exercises.






                              share|cite|improve this answer








                              New contributor



                              Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                              Check out our Code of Conduct.





                              $endgroup$



                              1. 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 to write a different algorithm than the one you taught them, it can be really cumbersome if they have to deal with every details of Java.


                              2. As other said it, it's good for student to come up with they own implementation in code of the pseudo-code algorithm. They need to really understand it, while if they just paste code or learn it by heart they won't necessarily understand every subtlety.


                              I think most universities do this already (mine did), but I think the best is pseudocode for the course, and real code for practical exercises.







                              share|cite|improve this answer








                              New contributor



                              Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                              Check out our Code of Conduct.








                              share|cite|improve this answer



                              share|cite|improve this answer






                              New contributor



                              Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                              Check out our Code of Conduct.








                              answered 14 hours ago









                              Teleporting GoatTeleporting Goat

                              1111




                              1111




                              New contributor



                              Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                              Check out our Code of Conduct.




                              New contributor




                              Teleporting Goat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                              Check out our Code of Conduct.























                                  0












                                  $begingroup$

                                  Neither alone is enough for a good dish.



                                  I'd go with pseudo code in the lecture, and use homework to give students practice in turning pseudo code into real code.



                                  Using pseudo code in the lecture has the pragmatic reason that pseudo code is, by nature, somehow vague. You want to use it as a tool to be able to concisely state ideas that still contain all important details, but abstract as many of the unimportant ones away.



                                  Because of this, it takes some time to gauge, as a student, how pseudo your pseudo code actually is allowed to be:

                                  As an example, at the start of the course, pseudo code shouldn't involve a (merge-)sort, but once you're done with that chapter, there's no harm in adding the line "sort the array A" without further explanation.



                                  Therefore I'd say that the easiest way for a student to learn what is, and what is not, allowed in pseudo code, is by getting a feel for it, simply by osmosis over time.



                                  And if some students have problems understanding your pseudo code, then they still have enough resources (books, or even interactive coding sessions of the algorithm) showing them how the algorithms would look like in an actual programming language.



                                  On the other hand, to understand the design and working of an algorithm, it helps immensely to have coded it yourself, at least partially, once.

                                  Therefore, by letting your students program the algorithm (or letting them finish a partially programmed algorithm) and then tasking them to "play with it", they'll get a good look on the other side of the medal as well.






                                  share|cite|improve this answer









                                  $endgroup$

















                                    0












                                    $begingroup$

                                    Neither alone is enough for a good dish.



                                    I'd go with pseudo code in the lecture, and use homework to give students practice in turning pseudo code into real code.



                                    Using pseudo code in the lecture has the pragmatic reason that pseudo code is, by nature, somehow vague. You want to use it as a tool to be able to concisely state ideas that still contain all important details, but abstract as many of the unimportant ones away.



                                    Because of this, it takes some time to gauge, as a student, how pseudo your pseudo code actually is allowed to be:

                                    As an example, at the start of the course, pseudo code shouldn't involve a (merge-)sort, but once you're done with that chapter, there's no harm in adding the line "sort the array A" without further explanation.



                                    Therefore I'd say that the easiest way for a student to learn what is, and what is not, allowed in pseudo code, is by getting a feel for it, simply by osmosis over time.



                                    And if some students have problems understanding your pseudo code, then they still have enough resources (books, or even interactive coding sessions of the algorithm) showing them how the algorithms would look like in an actual programming language.



                                    On the other hand, to understand the design and working of an algorithm, it helps immensely to have coded it yourself, at least partially, once.

                                    Therefore, by letting your students program the algorithm (or letting them finish a partially programmed algorithm) and then tasking them to "play with it", they'll get a good look on the other side of the medal as well.






                                    share|cite|improve this answer









                                    $endgroup$















                                      0












                                      0








                                      0





                                      $begingroup$

                                      Neither alone is enough for a good dish.



                                      I'd go with pseudo code in the lecture, and use homework to give students practice in turning pseudo code into real code.



                                      Using pseudo code in the lecture has the pragmatic reason that pseudo code is, by nature, somehow vague. You want to use it as a tool to be able to concisely state ideas that still contain all important details, but abstract as many of the unimportant ones away.



                                      Because of this, it takes some time to gauge, as a student, how pseudo your pseudo code actually is allowed to be:

                                      As an example, at the start of the course, pseudo code shouldn't involve a (merge-)sort, but once you're done with that chapter, there's no harm in adding the line "sort the array A" without further explanation.



                                      Therefore I'd say that the easiest way for a student to learn what is, and what is not, allowed in pseudo code, is by getting a feel for it, simply by osmosis over time.



                                      And if some students have problems understanding your pseudo code, then they still have enough resources (books, or even interactive coding sessions of the algorithm) showing them how the algorithms would look like in an actual programming language.



                                      On the other hand, to understand the design and working of an algorithm, it helps immensely to have coded it yourself, at least partially, once.

                                      Therefore, by letting your students program the algorithm (or letting them finish a partially programmed algorithm) and then tasking them to "play with it", they'll get a good look on the other side of the medal as well.






                                      share|cite|improve this answer









                                      $endgroup$



                                      Neither alone is enough for a good dish.



                                      I'd go with pseudo code in the lecture, and use homework to give students practice in turning pseudo code into real code.



                                      Using pseudo code in the lecture has the pragmatic reason that pseudo code is, by nature, somehow vague. You want to use it as a tool to be able to concisely state ideas that still contain all important details, but abstract as many of the unimportant ones away.



                                      Because of this, it takes some time to gauge, as a student, how pseudo your pseudo code actually is allowed to be:

                                      As an example, at the start of the course, pseudo code shouldn't involve a (merge-)sort, but once you're done with that chapter, there's no harm in adding the line "sort the array A" without further explanation.



                                      Therefore I'd say that the easiest way for a student to learn what is, and what is not, allowed in pseudo code, is by getting a feel for it, simply by osmosis over time.



                                      And if some students have problems understanding your pseudo code, then they still have enough resources (books, or even interactive coding sessions of the algorithm) showing them how the algorithms would look like in an actual programming language.



                                      On the other hand, to understand the design and working of an algorithm, it helps immensely to have coded it yourself, at least partially, once.

                                      Therefore, by letting your students program the algorithm (or letting them finish a partially programmed algorithm) and then tasking them to "play with it", they'll get a good look on the other side of the medal as well.







                                      share|cite|improve this answer












                                      share|cite|improve this answer



                                      share|cite|improve this answer










                                      answered 11 hours ago









                                      SudixSudix

                                      28118




                                      28118



























                                          draft saved

                                          draft discarded
















































                                          Thanks for contributing an answer to Computer Science Stack Exchange!


                                          • Please be sure to answer the question. Provide details and share your research!

                                          But avoid


                                          • Asking for help, clarification, or responding to other answers.

                                          • Making statements based on opinion; back them up with references or personal experience.

                                          Use MathJax to format equations. MathJax reference.


                                          To learn more, see our tips on writing great answers.




                                          draft saved


                                          draft discarded














                                          StackExchange.ready(
                                          function ()
                                          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcs.stackexchange.com%2fquestions%2f109407%2fis-it-a-good-idea-to-teach-algorithm-courses-using-pseudocode-instead-of-a-real%23new-answer', 'question_page');

                                          );

                                          Post as a guest















                                          Required, but never shown





















































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown

































                                          Required, but never shown














                                          Required, but never shown












                                          Required, but never shown







                                          Required, but never shown







                                          Popular posts from this blog

                                          Invision Community Contents History See also References External links Navigation menuProprietaryinvisioncommunity.comIPS Community ForumsIPS Community Forumsthis blog entry"License Changes, IP.Board 3.4, and the Future""Interview -- Matt Mecham of Ibforums""CEO Invision Power Board, Matt Mecham Is a Liar, Thief!"IPB License Explanation 1.3, 1.3.1, 2.0, and 2.1ArchivedSecurity Fixes, Updates And Enhancements For IPB 1.3.1Archived"New Demo Accounts - Invision Power Services"the original"New Default Skin"the original"Invision Power Board 3.0.0 and Applications Released"the original"Archived copy"the original"Perpetual licenses being done away with""Release Notes - Invision Power Services""Introducing: IPS Community Suite 4!"Invision Community Release Notes

                                          Canceling a color specificationRandomly assigning color to Graphics3D objects?Default color for Filling in Mathematica 9Coloring specific elements of sets with a prime modified order in an array plotHow to pick a color differing significantly from the colors already in a given color list?Detection of the text colorColor numbers based on their valueCan color schemes for use with ColorData include opacity specification?My dynamic color schemes

                                          Ласкавець круглолистий Зміст Опис | Поширення | Галерея | Примітки | Посилання | Навігаційне меню58171138361-22960890446Bupleurum rotundifoliumEuro+Med PlantbasePlants of the World Online — Kew ScienceGermplasm Resources Information Network (GRIN)Ласкавецькн. VI : Літери Ком — Левиправивши або дописавши її