CS-insanity and things that make me want to quit
-
The purpose of memorizing algorithms is to give you the tools to solve higher-level problems. In over 99% of the problems that you face while programming, you will find that someone has solved parts of the problem. It is up to you to decide how to string all of these parts together. As a simple example, assume that part of your requirements involve producing a sorted table of data. The constraints of the problem affect how you will sort the data: 1. Do all of the data fit in memory (RAM) at one time? 2. Is additional memory available? 3. Is additional disk space available (beyond that required to store the data)? 4. Performance issues - time, power usage, etc. Each of these constraints affect the choice of sorting algorithm, and may in turn affect other parts of the design. It is your duty as a designer to choose the best ways to perform the requirements. The challenge of software engineering is not in writing basic algorithms, but in putting them together to create a working program.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
Daniel Pfeffer wrote:
, but in putting them together to create a working program.
:thumbsup:
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
There is no point "reinventing the wheel." So, if you need to do a bubble sort in c# then google that and take one that works. It's faster and easier, but of course test it. However, most of software development is making specific business functions and you can't copy and paste that off of the internet. Some pieces of code are reusable, and that's a good thing.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
-
Well, this is the problem. In the beginning I tried to solve those problems by myself, but some problems has only one solution that you have to copy anyway. For example Game of life, can you do it just with one loop? No, you have to use 4 loops. You can put them inside methods or create classes but still you have to copy this solution. Same to bubble sort. You can't invent anything new. You have to copy. Because there is only that one solution, because otherwise its not bubble sort. So why bothering even to think? If the result is anyway that same solution. The other thing would be if I made a whole program from scratch... a game or an app. Here I can implement new solutions and really think for myself. I don't have to reimplement other people's ideas, unless I find them useful. This is the main problem.
The idea of "reinventing the wheel" in producing your own version of the code for a bubble sort for example is that it teaches you how to think about problems, how to approach them, how to break them down and work out how to implement a solution. Copy'n'paste doesn't do that: it teaches you sod all, except to be reliant on other's work - which when you get a "real world problem" that doesn't have a ready chunk of code on SO or CP means you have no idea where to start. Have a look here: If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^] It goes through a simple problem and shows you how to start thinking about solving it.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
The idea isn't to copy and paste other people's code, but to write it yourself. Things like algorithms for sorting don't require large programs and, by building small ones, you will acquire the skills to build larger ones. That said, it sounds like you've already done a fair bit of coding, so you may find this tedious for a while. If so, it won't stay that way and is just something you have to endure for a year or two. Once you get to your 3rd or 4th year, you will be able to work on more interesting projects, such as compiler or operating system components. If you find things easy right now, you should also have extra time on your hands, in which case there is nothing to prevent you from working on your own projects. Many articles submitted to this site are written by people who do exactly that. Many of them have retired but still code and write about it as a hobby. I'm one of them. P.S. As an aside, no one wins chess tournaments by memorizing opening lines. I'm an average tournament player and, believe me, it's far from that simple.
Robust Services Core | Software Techniques for Lemmings | Articles
The fox knows many things, but the hedgehog knows one big thing.But the question is then, so what are those libraries for? What is the point of reinventing the wheel? I understand if talked about problems in real programs, not some exercises that you will only see on the interview and CS-exam. I feel like I waste my time... Why learn something that you have to forget about after you get your job. Because dont tell me you do bubble sort at your job, when you have all those libraries? Or are making Conways game of life? Why not learn solving problems that I actually meet at my future work? Becase time is money, and I feel like I'm wasting my time...
-
The purpose of memorizing algorithms is to give you the tools to solve higher-level problems. In over 99% of the problems that you face while programming, you will find that someone has solved parts of the problem. It is up to you to decide how to string all of these parts together. As a simple example, assume that part of your requirements involve producing a sorted table of data. The constraints of the problem affect how you will sort the data: 1. Do all of the data fit in memory (RAM) at one time? 2. Is additional memory available? 3. Is additional disk space available (beyond that required to store the data)? 4. Performance issues - time, power usage, etc. Each of these constraints affect the choice of sorting algorithm, and may in turn affect other parts of the design. It is your duty as a designer to choose the best ways to perform the requirements. The challenge of software engineering is not in writing basic algorithms, but in putting them together to create a working program.
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
Well, what you described is the real world problem. Now I wonder how you apply bubble sort and Conways game to that? So how you solve the problem you described? Well, you look at the existing libraries or you come up with your own solution. Algorthmic problems? Allways. Reinventing the wheel just to feel like you're intelligent, I think is showing more stupidity than intelligence.
-
But the question is then, so what are those libraries for? What is the point of reinventing the wheel? I understand if talked about problems in real programs, not some exercises that you will only see on the interview and CS-exam. I feel like I waste my time... Why learn something that you have to forget about after you get your job. Because dont tell me you do bubble sort at your job, when you have all those libraries? Or are making Conways game of life? Why not learn solving problems that I actually meet at my future work? Becase time is money, and I feel like I'm wasting my time...
You have to be given problems that are simple enough that beginners can do them in a reasonable time: a few hours (because if they can't do it in that time, its' not going to get done at all!) If you were given as your first task "write the code for an industrial inkjet printing machine for traded- and consumer- units, including the user interface to this 50 page document" you'd go "Urk!" and abandon the course. Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug (repeat as necessary all previous stages as a result), cope with spec changes on a daily basis, ... all the little bits that "real world" developers have to do all the time. And even if they did, they don't have the time, and teachers don't have the time to mark it effectively for a whole class full. So teachers set little problems you can do, and work up to more complex problems that build on the basics slowly enough that you don't feel overwhelmed.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
But the question is then, so what are those libraries for? What is the point of reinventing the wheel? I understand if talked about problems in real programs, not some exercises that you will only see on the interview and CS-exam. I feel like I waste my time... Why learn something that you have to forget about after you get your job. Because dont tell me you do bubble sort at your job, when you have all those libraries? Or are making Conways game of life? Why not learn solving problems that I actually meet at my future work? Becase time is money, and I feel like I'm wasting my time...
There is some truth to what you're saying, but it's also difficult to design "real world problems" that can be solved in a university setting. Depending on what school you're at, many of your instructors may not even have much real world experience, because there's quite a gulf between pure CS and software engineering. Many of your classmates probably wouldn't be able to handle real world problems at this stage anyway. In later years, there's typically a course or two where you work in teams, the same way you would in industry, because this introduces issues that don't arise when working on your own. The project that a team implements, however, might be something that's already been done, like a microkernel or a simpler version of MS Word.
Robust Services Core | Software Techniques for Lemmings | Articles
The fox knows many things, but the hedgehog knows one big thing. -
The idea of "reinventing the wheel" in producing your own version of the code for a bubble sort for example is that it teaches you how to think about problems, how to approach them, how to break them down and work out how to implement a solution. Copy'n'paste doesn't do that: it teaches you sod all, except to be reliant on other's work - which when you get a "real world problem" that doesn't have a ready chunk of code on SO or CP means you have no idea where to start. Have a look here: If you are having problems getting started at all, then this may help: How to Write Code to Solve a Problem, A Beginner's Guide[^] It goes through a simple problem and shows you how to start thinking about solving it.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
I feel that the whole point of your CS training is that : - One day, you may be placed in charge of maintaining and extending those very libraries which you are using today, - For which you need to know the internals of how those libraries are written. This training is the drill for that.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
I think you will most likely find in the real world you will never be asked to write Conway's Game of Life. Most business problems are far more complex and require considerable thought. People who try to do it by cut and paste tend to fail quite quickly. Or, worse still, the business fails because the code does not work.
-
Well, I have few books on problem solving. But how helpful are they when I have a problem with only one solution? Like Conways game of life. it has only one solution. I can't be creative and maybe use a while-loop or just one loop. No, this problem has only one solution - 4 loops. And what we actually learn as students is to copy these fourr loops, because there is no other way to recreate this game. If the problem was, create a program with such and such funcionality than I could create anything I wanted as long as it had thsi functionality. Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza. These is how those algorithms work, you have to recreate certain recipe, otherwise you didn't solve the problem. So you memorize all those recipes and you recreate them, and the worst thing is that in the end of the day, you don't even use them because you have huge libraries with all those algorithms prewritten. If I at least have use of them, but I don't. When I create my own programs I solve much complex problems and I don't find it hard at all. Why? because I see meaning in what I do. Here I don't see a meaning besides to pass exams and make the interviewer glad.
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
You have to be given problems that are simple enough that beginners can do them in a reasonable time: a few hours (because if they can't do it in that time, its' not going to get done at all!) If you were given as your first task "write the code for an industrial inkjet printing machine for traded- and consumer- units, including the user interface to this 50 page document" you'd go "Urk!" and abandon the course. Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug (repeat as necessary all previous stages as a result), cope with spec changes on a daily basis, ... all the little bits that "real world" developers have to do all the time. And even if they did, they don't have the time, and teachers don't have the time to mark it effectively for a whole class full. So teachers set little problems you can do, and work up to more complex problems that build on the basics slowly enough that you don't feel overwhelmed.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
My impression is that he's in a world of copy-and-paste. He may think of it differently. He may describe himself differently. His first source is to see what someone else has done and copy it. I'm one of those self-taught types. Wallowing in errors - and the thrill of solving one - and even more, all the stuff learned in solving it. And - like "way back when" with a paper encyclopedia or dictionary: after you look something up, how can you resist looking at some other things that followed it or preceded it since, after all, the book's already opened and before you. In C, I looped through an array using indices. Then I came across someone incrementing a pointer, instead, and using that? Why? It was a tool in my mind for recursive functions (like English-to-Piglatin converter). So much overhead just went away. Ah Ha ! Even his complaint is a rehash of Ecclesiastes. The difference, of course, is that Solomon experimented with changing his views and developed insights. As you know, I occasionally get harsh - but this guy's so full of himself. It is the one facet of his arguments that is consistent. Admittedly, I follow the philosophical hubris of Hannibal:
"If I cannot find a way I shall make one!"
(or know the reason why)
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
There is no point "reinventing the wheel." So, if you need to do a bubble sort in c# then google that and take one that works. It's faster and easier, but of course test it. However, most of software development is making specific business functions and you can't copy and paste that off of the internet. Some pieces of code are reusable, and that's a good thing.
Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.
ZurdoDev wrote:
Some pieces of code are reusable, and that's a good thing.
Quite so. That's essentially why we make functions/procedures to begin with. And templates. To get quickly (and safely) through the parts that are the same so that we may get on with doing the real work.
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
One way of looking at this : (using the bubble sort example) Do you understand how the bubble sort works? ; do you understand the underlying algorithm it uses and how it behaves with small data size vs. large data size (google big O ... ), do you understand how other sorting algorithms work and how they behave with small and large data size (i.e. quick sort, heap sort ... ) When you are asked to do some simple basic things like that, it is only a building block upon the rest of your CS education.
I'd rather be phishing!
-
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
And of course ... the dreaded Ham and Pineapple ... :laugh: Truly the VB of pizza!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
-
Hi! I study CS already few months and I start hating programming - something I used to love. I thought that programming was about being creative, about inventing things, but the only things that we keep doing at school is copying and pasting other people's ideas. I don't know what is the point of copying and pasting other peoples algorithms? Especially when you program in Java which have a massive library with all those alorithms prewritten. What is the point of building a bubble-sort algorithm from scratch if you have a massive Java-libraries with all algorithms already prewritten? So what's the point of the classes and whole idea of object orientation and reusable code if the job-interviewers and the school is expecting from you to reinvent the wheel? Because they want to test your intelligence? How is this testing my intelligence if solving algorithmic problems is just about memorizing other people's solutions thanks to photographic memory and pasting them on the whiteboard from your memory then explaining to the teacher or the inteviewer what it is that you copied. And those problems are all the same - only written with different words. By memorizing all common algorithms from books you can solve all of them by finding analogy without even using your brain for a second just like those russian chess players who won tournaments by memorizing all chess openings from books. The funny thing that I always read on the internet is people writing something like "I was bored, so I created Conway's game of life". Like what? You didn't create anything. You just reimplemented someone's idea from a book or from a tutorial from a guy who also copied it from a book or a tutorial. You copied and pasted a solution that someone already came up with. Because, can you make a Conway's game of life without those famous 4 loops? You can maybe create a class or a different method but those 4 loops you have to copy and past. So what is the point of doing all this copying and past? I'm so bored. Why is programming so boring? All these stupid games and algorithms that we have to copy and past. I would love to build my own program, that I invented, with solutions that I came up with and not recreate some prehistoric code... Is this hwo this job will look like in the future? I thought I would be free to create something that is mine, that I can stand for and not be a living scanner. Maybe I should be a writer instead? As a creative person I feel tormented by my school and the thought that this is how my job will look like the rest of my
semantics. Some people say copy/paste, some people say OOP.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.
-
And of course ... the dreaded Ham and Pineapple ... :laugh: Truly the VB of pizza!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
(originally) a Hawaii/West Coast thing. When I heard of it I was to shocked to even gasp. What next? Washing one's hair and face with Vaseline (petroleum jelly)?
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
-
You have to be given problems that are simple enough that beginners can do them in a reasonable time: a few hours (because if they can't do it in that time, its' not going to get done at all!) If you were given as your first task "write the code for an industrial inkjet printing machine for traded- and consumer- units, including the user interface to this 50 page document" you'd go "Urk!" and abandon the course. Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug (repeat as necessary all previous stages as a result), cope with spec changes on a daily basis, ... all the little bits that "real world" developers have to do all the time. And even if they did, they don't have the time, and teachers don't have the time to mark it effectively for a whole class full. So teachers set little problems you can do, and work up to more complex problems that build on the basics slowly enough that you don't feel overwhelmed.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt AntiTwitter: @DalekDave is now a follower!
OriginalGriff wrote:
Beginners don't have the skills to analyse a problem, design a system, implement it, document it, test and debug
Yet that is where they should start: At "analyze a problem". That is what software development really is about - far more than coding, testing and debugging it. Or, so it ought to be. If you don't have to implement / test / debug, you can, early in your studies, analyze quite large systems and design the solutions - far larger problems than those you have the resources to code / test / debug. While you are learning methodologies for problem analysis and solution design (at an implementation independent level!), you should, in parallel, learn implementation, testing and debugging techniques, applied to small, manageable problems for a beginning student. But that is not the main focus of a software developer's education. The problem analysis and (implementation independent) solution design is. Modern education programs start with a typing course: Student learn to type "int main(int argc, char *argv[]) {}" first, and taught the finer details of lambdas, and only after that start asking what the problem is all about. That is to turn things upside down. But that is how we want it nowadays. Even if it is upside down.
-
Member 14971499 wrote:
Let me give you an analogy of food. If someone told you: make a pizza. How creative is that? You have to follow a recipe, copy that recipe, or it's not a pizza.
I think you summed up the problem quite well, here. You are a recipe follower - or you'd not be complaining, here, about not being able to use your imagination. You may think you are more, but, solving a problem yourself, even though it's been done, is not just a learning experience but a chance for you to use your imagination. I think your pizza idea is a perfect one - you think there's only one solution. Have you and idea how many types of pizza there are? NY Style. Chicago Style. Heaven only knows what they eat in Europe. So, you'll say they're all just basically the same? Well so is every person; so is every car; in fact, so is every day in your way of thinking. Why bother going on to more days when they're all the same? Damn you must be bored with more than just coding . . .
"The difference between genius and stupidity is that genius has its limits." - Albert Einstein
"If you are searching for perfection in others, then you seek disappointment. If you seek perfection in yourself, then you will find failure." - Balboos HaGadol Mar 2010
Of course, its a good analogy. You can add a pepperoni to it, but it still follow the same recipe. Just like conways life of game, you can add some function, you can create a class, but you have to implement four for loops, and there is no other solution to the problem, so even if you sit down and come up with that solution on your own is not any different than the code that other people copied from the internet, and the teacher and the interviewer will not see a difference between the code that you fought with for a week and the code someone copied and just learn how it works. Maybe your variable's name in your loops is int row and int column but in his is int i and int j. Just like in pizza, in Ahmed's pizza is pepperoni, in Steven's is chicken but still is made from same recipe. There is no pizza made of rice or made of noodles. The same goes for those common algortihms. You can't invent anything new here. Bubble sort has only one solution, and you can name your variables different and maybe use some function but still it follows only one formula which you have to memorize. It's not the same when you create your own program. Here your imagination is the limit. You can make it whatever you want it to be. You can create your own game, with even more complex logic than Conways game of life. That's why I start to hate programming because I just reinvent people's ideas. I would like to come up with my own ideas not follow someone's formula.
-
semantics. Some people say copy/paste, some people say OOP.
If you can keep your head while those about you are losing theirs, perhaps you don't understand the situation.