Asked by Daniel Shub
on 28 Sep 2011

What possess teachers to ask students to program something in MATLAB (or any language) and then tell them they cannot use certain functions? What is so wrong with using the built in functions for sorting and summing? What exactly are the teachers trying to teach? Most importantly, how can we answer these types of question so that the teachers learn not to ask them?

Answer by John D'Errico
on 28 Sep 2011

Jan
on 30 Sep 2011

+1: I have a different _opinion_, but your argument is comprehensible and correct. Everything, which can be learned about the quicksort *algorithm*, can be learned by writing it in Matlab.

In opposite to that, an efficient quicksort *implementation* must consider the runtime and stack size, e.g. by limiting the recursion depth. It is much easier to control this in a low-level language.

Therefore a professional programmer has to learn: "Do not implement quicksort in Matlab!" Later a frustrating large number of users will answer: "Why not, our professor told us to do so..."

I notice the notorious usage of CLEAR('all') -even inside functions!-, EVAL, ASSIGNIN and "save FileName". I see that a lot of students learn their algorithms and data structure lessons, but there is a limited education for using Matlab specifically. My Matlab lesson has been: "Matlab is slow because of the FOR loops and because everything complicated must be expressed by EVAL. Good luck."

Summary:

Good: Learn implementing fundamental algorithms by using Matlab.

Bad: Learn using Matlab by implementing fundamental algorithms.

John D'Errico
on 30 Sep 2011

Good points by Jan here.

Daniel Shub
on 30 Sep 2011

I don't think it is good to lean how to implement fundamental algorithms by using MATLAB. The high level nature of the MATLAB language offers few benefits for such activities and can get in the way. Maybe it is not so bad if you are willing to write mex functions, but then I think students would be better just using C.

I also don't believe questions about sort functions and magic squares are generally from CS type classes, but tend to come from more general science and engineering classes where they are trying to teach students to use MATLAB.

Sign in to comment.

Answer by Walter Roberson
on 28 Sep 2011

Who expects that sorting and summing would be understood by the time MATLAB is started? It might be the case in some establishments, but it is not the case in other establishments. I have seen more than one student indicate that in their degree, using MATLAB was their first programming course; those were primarily engineering students, as I recall.

If people already understood sorting and summing by the time they started using MATLAB, we would not have so many students encountering basic difficulties in implementing these things. We can pontificate that the students "should" already have dealt with such matters in previous courses, but it is clear from the questions that we get that many many students have not had that previous instruction. I don't recall any students yet indicating that they had taken sorts in a previous course but hadn't understood them in that course. It is not our place to tell universities how to run their degree programs. We can grumble, and we can individually choose not to respond, but solving the problems of educational systems in other countries is beyond the influence of anyone I have seen post here.

In some countries, especially those with many more people than available jobs, it is policy in the upper-echelon universities to "throw students off of the deep end" -- to deliberately push students beyond "reasonable" limits and without "reasonable" background, with some courses designed to fail most students. This selects for the "cream" of the students, the ones who do not give in to pressure, who get the tasks done and on time (whether through technical ability or by "learning how to work the system", such as learning who to bribe, or how to cheat without getting caught.) The system is somewhat similar to that used for medical students in Canada and the USA, with their very strenuous "residencies", which at least has the excuse of selecting students who will be able to work through hardships disasters.

I know of at least one well-known US university that uses (or used) this kind of technique for Computer Science, with the first and second year courses explicitly designed to impersonally weed large classes down to much much smaller numbers, with the real teaching reserved for third and fourth year students. (But even that university was no-where near as harsh as what I observe in some countries.)

Yes, "Each problem/class/unit will have a set of aims and objectives". Unfortunately a lot of the time, the instructor fails to make those aims and objectives clear... or even to mention them at all. I know someone who has been researching these issues, and who teaches workshops to university classes to make students aware of these issues, to help the student recognize the need for clarifications and to "negotiate" with the instructor about the requirements. This person spends part of their time operating a research help desk at a university; they have indicated to me that first and second year students almost never have any idea what the purposes of any given assignment are, and that third year students are usually fairly weak in this area, with it being uncommon (but not unknown) for anyone below masters level to ask a "good" question.

It could be that perhaps the "best" question I asked in university was "Why is learning COBOL mandatory for first term computer students? Since the first language they learn is going to provide the foundation for all future learning, why would you want to weigh them down with so many decades of bad programming?". (Unfortunately, the answer was "So that they can get summer jobs with industry.")

Andreas Goser
on 30 Sep 2011

I have made very similar and terrible observations about "design to fail", "weeding out", etc. One theorry I have is, that there may be a connection between how the studies are paid. If the tax payers finance the system, there might be a lower motivation to treat students as customers, compared to systems where the students directly pay for their education.

Certainly, there are good reasons to avoid only kids of wealthy parents can study. It is actually a pitty that in some coutries like currently Germany, some aspects of the US system are implemented (like student fees), but on the other hand large scale scholarship programs are not implemented.

Sign in to comment.

Answer by Fangjun Jiang
on 28 Sep 2011

Walter Roberson
on 29 Sep 2011

Many of the clay tablets were only preserved by accident! http://en.wikipedia.org/wiki/Clay_tablet

Bjorn Gustavsson
on 30 Sep 2011

Jan
on 30 Sep 2011

I'm going to plug some clay in my DVD burner and see, if I can create a long-term backup for thousands of years. What a great combination of the technologies of different ages!

I picture the commercials: "Floppy disk -> Zip -> CD -> DVD -> BD -> CoC (Clumb of Clay)... the evolution cannot be stopped".

Sign in to comment.

Answer by Oleg Komarov
on 28 Sep 2011

I think that the instructor asks to accomplish a task but leaves the student the choice of the language to use.

However, if the instructor asks the student to implement e.g. a sorting algorithm, MATLAB will impede the student from learning the concept if the sort function is used. Thus, the need for the limitations.

Daniel Shub
on 28 Sep 2011

Sign in to comment.

Answer by UJJWAL
on 28 Sep 2011

Hey Come on

It is correct that you need to know the internal multiplication and division . But by the time you start using MATLAB, it is expected that you have an idea of sorting and summing so that you do not need to take a course in them.

Moreover MATLAB is built for analysis and not for hardcore C/C++ type programming. though both of them are programming languages but still, the purposes are very different and hence it is bullshit to place such restrictions.

There are a whole lot of MATRIX Computations that the teachers can teach a student , like efficient ways to store matrices and manipulate them etc.. But This kind of attitude taken by teachers destroys one's perspective of using MATLAB properly and instead of enjoying it , people start looking upon it as a painful programming language

Fangjun Jiang
on 28 Sep 2011

Andrew Newell
on 28 Sep 2011

Sign in to comment.

Answer by Malcolm Lidierth
on 28 Sep 2011

Each problem/class/unit will have a set of aims and objectives. Those will be tailored to the audience, as will the choice of programming language. Most students do not list the objectives for the problem on these posts. If they did, the instructor's logic would, hopefully, be apparent.

My first serious programming as a student was done on a DEC PDP11/34 minicomputer. It had FORTRAN and MACRO-11 assembler available and 32 kB of memory. Everything had to be coded from scratch. That experience remains useful today. One advantage was that it was ~7kW and fan-cooled - ideal for drying laundry on a student budget.

Sign in to comment.

Answer by Jan
on 28 Sep 2011

I'm supposed to write a code that will round any values to a specified

numeric placement, such as the tens, hundredths, etc.

...

3. At any point in this code you shouldn’t use any built-in functions

(such as: round, ceil, floor, fix, max, min, etc.).

4. You can ONLY use (length, size, relational operators {< > ~=},

logical operators {|, &}, if, for, while and switch).

Of course this was ridiculous, because the teacher had obvioulsy no deeper insight in MATLAB: E.g. FOR is useless without HORZCAT or COLON, which are both built-in operators...

Anhow, it is very easy to create a homework question for teaching standard algorithms by using elementary and MATLAB functions:

a) Do it by elementary functions

b) Do it with MATLAB's builtin/toolbox functions

c) Use TIC/TOC to compare the results

d) For advanced users: estimate the memory consumption

Then the pupils learn something about fundamental numerics and the about the usage of high level languages.

But as long, as the questions stay at a) only, I ignore the important and usually best strategy not to answer homework questions. I post working, but goofy solutions. I was enlightened by a an answer (I do not know the author anymore) to the question "Find max(x) without using MAX" => "-min(-x)".

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 1 Comment

## Jan (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/16968-bad-homework-problems#comment_37637

Sign in to comment.