Am I mad, or is there a need? - opinions?
-
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
There's a certain portion of the programming community that only needs to learn 2 things; 1) How to do a google search 2) How to spell "Send Code Please" and not text speak it.
Semper Fi http://www.hq4thmarinescomm.com[^]
www.jaxcoder.com[^] WinHeist -
my one suggestion as a newbie, I have recently read LOTS of books of various levels of difficulty. The one thing I think for beginners is relevance. By this I mean chapter one covers variables, chapter two covers arrays and chapter three covers classes. How does a variable fit in a class for a total beginner? The books I have like the best are ones that instead of doing random examples for each chapter.. will take one project for the entire book for the most part.. and work it in stages. That way chapter one is directly relevant to chapter 7. The arrays built in chapter two fit directly into the class in chapter three etc... Make it an interesting project. Not another piece of software that crunches numbers but instead one that does something totally useless, but interesting and cool to a beginner to say "hey look what I did". Something a kid can show his parents or friends, or an older guy(like me) can show his wife and say "LOOK I accomplished something that's visible and cool". Even if it ends up a simple jeep rolling across the screen graphics program or some crud, its something that's visible and can be seen in action rather than "look I put in this number and got out this one" The point is not to show them how to make a specific high level program but to show them the basics of programming in a fun way.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
A very good point, and one of the main reasons I posted on here. With the proposed format (ie general programming savvy and not a specific language / project), the reader would only gain knowledge from the book - not experience or, if you like, a 'result'. There would be no 'certificate' at the end it, nothing to "show off". I've though long and hard about this, I've thought about HTML / Javascript (purely because you can do this with a text editor and browser, which everyone has without installing other software, or compiling, or going through a CLI), but this is not a good introduction to programming languages. You are right that it would be a lot easier to keep the reader's attention if they were working towards a goal and could demonstrate their new found skills, but what language do you pick? It's a tricky problem... A thought provoking post, and thanks for your input. This is not going to be a walk in the park! Danny
-
There's a certain portion of the programming community that only needs to learn 2 things; 1) How to do a google search 2) How to spell "Send Code Please" and not text speak it.
Semper Fi http://www.hq4thmarinescomm.com[^]
www.jaxcoder.com[^] WinHeistI will put 1) on the cover, and bury 2) in an appendix... Possibly in Arabic. Danny
-
Danny Martin wrote:
I know it will be a challenge, but isn't that what us softies thrive on?
That's why I said I think you should write it anyway. Logical operators can be explained with analogies but that will not really do it for bitwise ones, so binary has to be there somewhere. I shudder at the thought of trying to explain one's and two's compliment in a 'fun' way. Good luck if you think you can though. :)
Henry Minute Do not read medical books! You could die of a misprint. - Mark Twain Girl: (staring) "Why do you need an icy cucumber?" “I want to report a fraud. The government is lying to us all.” I wouldn't let CG touch my Abacus! When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is.
Hell, I'm up for it! (that is until the next 6 month floating spec comes along)
-
I will put 1) on the cover, and bury 2) in an appendix... Possibly in Arabic. Danny
:laugh: :laugh: I think you'll do alright.
Semper Fi http://www.hq4thmarinescomm.com[^]
www.jaxcoder.com[^] WinHeist -
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
-
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
Danny Martin wrote:
Can you teach someone how to program without actually teaching them a specific language
Yes. Imho, this is the best way to teach someone how to program, because it forces them to learn how to think like a CPU. Imho, all you need are a few basic mathematical instructions, a few control structures, and the ability to input and output a number. I used this technique with much success (and enjoyment by my students) when I taught freshman CS 101 in the early 80s. /ravi
My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
-
A very good point, and one of the main reasons I posted on here. With the proposed format (ie general programming savvy and not a specific language / project), the reader would only gain knowledge from the book - not experience or, if you like, a 'result'. There would be no 'certificate' at the end it, nothing to "show off". I've though long and hard about this, I've thought about HTML / Javascript (purely because you can do this with a text editor and browser, which everyone has without installing other software, or compiling, or going through a CLI), but this is not a good introduction to programming languages. You are right that it would be a lot easier to keep the reader's attention if they were working towards a goal and could demonstrate their new found skills, but what language do you pick? It's a tricky problem... A thought provoking post, and thanks for your input. This is not going to be a walk in the park! Danny
well, again this is personal opinion not one stinking fact to back it up, but I think it would be difficult to do a general knowledge book for beginners without just picking a language and walking through it. otherwise the beginner who has no clue what is going on, will not be able to have that visual aid in putting 2+2 or variable into a class. Now a general book that is more advanced for say..just out of beginner stage or so programmers or programmers that just graduated but have almost no real world programming, that I could see being without a language but more into good practices, logic, algorithms. etc.. In fact I wouldn't mind one of those myself.. lol stuff like that was seriously lacking in my education and I'm learning it here and in practice.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
Danny Martin wrote:
Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")?
In the first programming course I took back in about 1967, our first project was to write an algorithm for a person to sharpen a pencil. (Remember, those wooden sticks with graphite in the middle?) Then, each person had to read their algorithm while a classmate executed exactly what was said, no more, no less. It required no programming language and drove home the point about designs, paying attention to details, and lots more!
CQ de W5ALT
Walt Fair, Jr., P. E. Comport Computing Specializing in Technical Engineering Software
-
Danny Martin wrote:
Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")?
In the first programming course I took back in about 1967, our first project was to write an algorithm for a person to sharpen a pencil. (Remember, those wooden sticks with graphite in the middle?) Then, each person had to read their algorithm while a classmate executed exactly what was said, no more, no less. It required no programming language and drove home the point about designs, paying attention to details, and lots more!
CQ de W5ALT
Walt Fair, Jr., P. E. Comport Computing Specializing in Technical Engineering Software
I have seen a similar one with bringing somebody a cup of coffee. from boiling the water to delivering the finished cup with cream and sugar. surprising enough to a lot of people, its quite a long process to describe compared to what most people first come up with.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
I have seen a similar one with bringing somebody a cup of coffee. from boiling the water to delivering the finished cup with cream and sugar. surprising enough to a lot of people, its quite a long process to describe compared to what most people first come up with.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
gavindon wrote:
surprising enough to a lot of people, its quite a long process to describe compared to what most people first come up with.
Which leads right into a nice discussion of top-down design, bottom-up implementation.
CQ de W5ALT
Walt Fair, Jr., P. E. Comport Computing Specializing in Technical Engineering Software
-
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
Danny Martin wrote:
Do you think this is viable?
TAOCP does this, well, a bit.. it contains a lot of stuff that definitely isn't day to day programming :) I think it could be done, programming is not about the language but about what you do with it.
Danny Martin wrote:
Are there things you think I should include, or omit, and why?
I think you should definitely include bitwise math, not all the tricks of course (there are other books for that), but the basics. Bitwise math is a significant part of programming, and having extra "tools" to work with never hurts (as long as you know when to use them, anyway). And if you decide to write a bit about floating point, please don't tell people they represent Reals because that just isn't true. I've seen oversimplifications like that far too often (even some of my CS teachers said it), and they leave people wondering why they're getting "wrong" results, when it's really their expectations that are wrong. To properly explain loops, you need, IMO, some (pseudo) assembly. Something like
if(cond) goto
doesn't "solve" the problem because then you can't explain howif
works. Feel free to disregard my advice though :) -
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
Why don't you right something like this; Don't Tell Mum I Work on the Rigs: (She Thinks I'm a Piano Player in a Whorehouse)[^], a spin off based on being a computer programmer. (Maybe: Don't Tell Mum I'm a Computer Programmer she thinks I'm an unemployed burger flipper)
Dave Find Me On: Web|Facebook|Twitter|LinkedIn
Folding Stats: Team CodeProject
-
Hi Guys, I've replied to a few posts on here, but never started my own thread - so please be gentle... I'm at a loose end at the moment, and had an idea to fill my spare time: I'll write a book. I'm sure a few of you at least have had a similar idea, and some have probably gone on to actually do something about it, so I thought that for my first post I'd throw this one out there to get chewed on... I'm going to write a book about how to program (allows suitable pause for laughter / groans to die down). Not a "How to write better X", or "Y for halfwits" or other such bobbins, but something that will attempt to explain what a general programmer does on a day to day basis, and how the reader can learn some of these key skills. I've read a good few books on various languages in my twenty odd years in the business, and most of these books state in the prologue that the book is aimed at someone who doesn't know the language in question (understandably) but has a basic understanding of programming. Some very basic (or should that be BASIC) ones tell the reader that a variable is "a box you can store stuff in" and provide other, equally inane, analogies, but these introductory steps are usually geared towards the language the book is preaching / teaching. I don't want to teach a language, I'd like to teach the skill / art / craft (don't hate me!) of programming in general. As I see it, in order to do this I need to explain how computers work, what binary is, where data is held and how it's accessed, how the stack / program counter (showing my age) work, basic boolean logic and so on. I need to explain the breakdown of a problem, what a program looks like from a programmer's point of view compared to the computer's, how loops work (hence the PC above), how functions work (hence stack) and so on... Don't worry, I'm not going to be posting again in ten minutes asking "How do computers work?" So, my question is: Do you think this is viable? Can you teach someone how to program without actually teaching them a specific language (with the exception of pseudo, which I will need for "listings")? Are there things you think I should include, or omit, and why? I look forward to your replies... Danny
...as a hatter! :laugh: But I think you should go ahead anyway. If nothing else, getting your book ready will give you a personal satisfaction even if it's not the big hit you'd think it ought to be. I know that from experience...
Beidh ceol, caint agus craic againn - Seán Bán Breathnach
-----
Don't tell my folks I'm a computer programmer - They think I'm a piano player in a cat house...
-----
Da mihi sis crustum Etruscum cum omnibus in eo!
-----
Everybody is ignorant, only on different subjects - Will Rogers, 1924modified on Saturday, April 2, 2011 12:31 PM