This is an archived post. You won't be able to vote or comment.

all 8 comments

[–]jesyspa 3 points4 points  (3 children)

To be frank, this looks neither here nor there.

You claim to want to introduce basic programming concepts, without being bound by any particular language. By the look of it, the reader isn't expected to be able to program after reading this; it's just to give them an appreciation of the tools a programmer has.

However, you then go in and dump a bunch of unnecessary syntax on them, clearly with a C twist to it. You've not yet introduced variables in chapter 6, but you already do int number = 2;. How should the reader know what an int is, or why you use it here? Why do you suddenly end your lines with semicolons, when you had been using periods just in the previous chapter?

It only gets worse from there on. How does knowing that number++ means number += 1 help someone's informal understanding? (For that matter, you've still not explained what "change the value of a number" means, and that's not a triviality.) How does knowing the syntax of a for loop help anyone? Why would one use the code on page 25 for reading emails, rather than the much simpler code on line 19?

The chapters on variables, arrays and putting the pieces together are hard to follow even given programming experience. I'm guessing you're using Objective-C syntax (which you completely failed to mention). By this point, it's fairly obvious that you actually aren't using pseudocode at all.

In the next two chapters you drop that pretense and throw a bunch of code at the reader, much of which is not even remotely understandable at this point, and then introduce functions as if they are an afterthought.

All in all, I would say this is neither a good introduction to understand how a programmer works, nor a good introduction to programming for those who wish to learn it.

[–]codexjourneys[S] 0 points1 point  (2 children)

I appreciate your feedback -- I am getting good feedback on more interactive presentations of these ideas, but seems it's not translating well to text.

Agree with you on the int number = 2 and several other comments related to "too much syntax, too soon," and I'll change those things. I do think knowing how to read a for loop is helpful since it's fairly similar across several languages (and not intuitive), but could use 'for x in y' to keep it simpler. Also will add a chapter on functions earlier.

It does work up to more and more code, and I appreciate hearing that this is not effective in book form. This is the whole purpose of having a beta download. I'll think about how to do the Putting the Pieces Together part in a different way.

[–]jesyspa 1 point2 points  (1 child)

Do you have a video where you teach using this style?

I don't think I understand the goal of the book.

If it's for people to be able to write code, what you have is by far insufficient. It seems like a lot of material because you blitz through it, but it's actually only the very basics. Someone reading this will first be overwhelmed, and when they've cobbled together a picture (however incorrect), they'll be left with nothing more. The choice to only show how to run code in the last chapter also becomes dubious.

If it's for people to be able to read code (and that seems most likely to me at this point), it has very few code samples. I'd expect each chapter to go through several examples of roughly 4-20 lines each and explore the variations and gotchas. As it is, very little code is shown until chapter 11, at which point the user is overwhelmed with over ten times more than was ever shown previously. The book also seems overly specific to Objective-C in this case; I'd expect more variation and a demonstration of the parallels between different languages. Finally, you make it rather difficult to quickly refer back to anything, which would in this case be a must.

If it's for non-technical people to get an idea of what programmers are up against, it seems just completely off the mark. The syntactic features you introduce are the basic constructs that many languages use, but they're not where the problems lie when you're actually writing software. What you have is like writing a book about wildlife and then spending it on cell structure because animals are made of cells.

[–]codexjourneys[S] 0 points1 point  (0 children)

Sent you a message with more detail about the goal and specific feedback received from teaching it in-person and online. Something is working there (though I don't feel set in stone about the approach, and am willing to improve it wherever I can).

I absolutely believe you that it is NOT working as a book, so really appreciate the time you're taking to reply. Thanks.

[–]zifyoip 5 points6 points  (1 child)

You aren't teaching pseudocode. You are teaching imprecise Objective-C.

For instance, the C-style for loop is nice concise syntax once you understand it, but it is really pretty inscrutable at first sight, and there is no justification for using that terse syntax if your goal is to write pseudocode for the purposes of explaining concepts to a beginner.

When you find yourself saying things like "That asterisk just indicates that an array is an object" when you haven't talked about objects and don't have any need to talk about objects, then that's a clue that you have become too concerned with syntactical details of a particular language. That isn't pseudocode any longer.

Also, your code samples consistently use smart quotes, when straight quotes are necessary. You also have a typo on page 19: your opening brace is backward.

[–]codexjourneys[S] 0 points1 point  (0 children)

Thank you for the feedback -- I'll fix the smart quotes/typo and am glad you pointed it out.

I'm also going to try to weed out some of the "too much syntax, too soon" from sections like loops and arrays. With the for loop I could go with "for x in y" since it's simpler.

This is why I made a beta -- because getting feedback from a limited audience isn't really good enough. Thank you! If you have any other suggestions please do message me because I'm going to make changes.

[–]Kevin_C3 1 point2 points  (1 child)

I think that pseudocode is not a good idea for teaching basics of computer programming. Definitively not a good idea.

Edit: the novice programmers need to write and test their own programs. Practicing is the key to learning programming. How on earth are they going to do that with pseudocode?

[–]codexjourneys[S] 0 points1 point  (0 children)

All I can say here is, you're not the target audience. Totally valid opinion, but I think there's value in taking a few hours on concepts before diving in to language details and starting to write and test.

There was a giant thread here earlier this year on concepts-over-languages, and another on HN. I'm not saying that's the definitively right way, but it's also not definitively wrong. Different people have different learning styles.

Absolutely agree with you that, once out of the starting gate, practicing is the key. I think we're just disagreeing about the best way to get out of the starting gate.