11/01/2006
For the 212 students who got 100% on PA 2 or the 37 additional students who got above 90%, you probably don't need to read this long message. You can simply delete and move on. For the rest of the class, I think it is important. One of my TAs came to me tonight after reading my response to the following message from a student. Dr Patt, Having received my second programming assignment grade via email, I am concerned. Both programming assignments have been absolute disasters for me, with simple errors riddling my programs. Should I be worried about this? Its not as though I don't understand the concepts behind the programs, because the programming logic is correct, I just haven't been getting the syntax of the LC3 assembly language correct, or I've been making a simple mistake with my numbers. Is syntax just as important as the concepts behind it? Should I be worried, or should I be content that I understand the concepts and have just made stupid mistakes? He was very upset with me because he felt I was too subtle and gentle in my response. And, he asked me to try again. But his email message was so clear that I thought I would just repeat his message here. He said: "An important point to make is that true syntax errors are caught by the assembler. Therefore, submitting a program that does not assemble means also absolute zero testing, which is an awful practice. If the errors are not truly syntactic, but on the use of the instructions, i.e. wrong conditions for branches, wrong label references, etc... then usually running just a few test cases on the Simulator would catch them. From what I've seen, many problems come from students rushing at the last minute to get something done, which they submit without even a minimum amount of testing and without the chance of getting help from a TA, hoping that we would look at the code and say: Oh!, this guy was close, lets give him an 85 even though the code does not assemble... I guess some of their high school teachers rewarded their efforts and made excuses for them not getting results. Like, "He really knew what he was doing, I should not penalize him for making simple mistakes." So, they expect us to do the same. Either that or they are just being careless about testing... Some students are using the grading process as their testing and then they complain that they made just a small mistake and deserve more than 0. We were benevolent on PA 1 with the regrade. I think we should be less so from now on. Many TAs are getting complaints about PA 2 also... I've heard of a couple of cases where the student hacked some bits in the machine code in the simulator to make it work and then submitted the unhacked source code, which obviously does not work... Or they submitted the wrong file, which happened to have some extra character that screws up the program... Or they relied on some memory values that they initialized manually with "Set value" on the simulator and obviously we cannot guess without fully understanding their code... BTW, the submission system allows them to see the content of the submitted file at any time before we close the script, so they can check exactly what they have." It would be very hard for me to improve on what my TA has written. ...and this email is getting very long. However, since it is important to me to try to help everyone do the best he/she can in this class, I will make a few more observations. First, in "harsher" words, my reaction to the following which I cut and pasted from the student's message: Its not as though I don't understand the concepts behind the programs, because the programming logic is correct, I just haven't been getting the syntax of the LC3 assembly language correct, or I've been making a simple mistake with my numbers. The Assembler catches ALL syntax errors. So, if there is a simple syntax error, the assembler will catch it, and will not assemble the program. So, either the student did not try to assemble the program before submitting it, or he did not know how to fix the "simple errors riddling (his) program." Should he get a zero for not trying to assemble the program or should he get a zero for not knowing how to fix the simple errors? ...even though he says he completely understands the concepts. The Simulator will catch all logic errors if he TESTS the program with enough sample data. Should the student get a zero because he turned in the program without fully testing it, or should he get a zero because even though he really understands the concepts, he could not figure out the simple numbers or logic he got wrong? Finally, the last comment from my TA is very bothersome. The purpose of the programming assignments is not to see if the student can hack the program he writes to make it look like it works. Almost always, that technique will fail on our test cases. Our objective is to get you to understand, not to challenge you to work around your lack of understanding and somehow magically get it to work on some piece of sample data. If you do not understand, please see one of the TAs or me. If you really do understand the concepts, demonstrate that by assembling and then testing your program before turning it in. I assume that is what the 212 students who got 100% on PA 2 did. And I would very much like to add you to that list on PA 3. Good luck successfully completing EE 306. Yale Patt