December 2004 Archives

I'm reading through Corinthians currently and came across chapter 2 of Corinthians, which is one of those passages that is difficult to accept from a human perspective. Many Christians who have accepted the truth of these passages often act as if they haven't. "But a natural man does not accept the things of the Spirit of God, for they are foolishness to him; and he cannot understand them, because they are spiritually appraised." (1 Corinthians 2:14) Who understands the oracles of God? Only those who have been shown them by His Spirit.

This is a difficult teaching to believe because it means that God controls who knows Him and who does not. Ultimately, no one can come to God unless He shows them the truth. Now, this leads to a common debate among Christian sects: who does God show these things to and how much say does the man who is shown have in his own salvation? Does God compel men to salvation (Calvinism) or does man see the choice and make it himself (Armenianism). I have a tendency to lean toward the Calvinist side myself because of passages like 1 Corinthians 1:26-29: "For consider your calling, brethren, that there were not many wise according to the flesh...but God has chosen the foolish things of the world to shame the wise..and the base things of the world and the despised God has chosen...so that no man may boast before God." And also the oft quoted Ephesians 2:8,9: "For by grace you have been saved through faith; and that not of yourselves, it is the gift of God; not as a result of works, so that no one may boast."

If we believers were able to make the decision to believe ourselves, we would be justified in boasting, "I am better than the common unbeliever because I saw the truth and chose to follow it." The Bible tells us quite the opposite. In his letter to the Romans, Paul spends a great deal of time explaining the fact that no one is better than another, not Jew over non-Jew, not Greek over non-Greek, not believer over unbeliever. All are sinners and worthy of the death sentence they live under. A believer's only advantage is that God has chosen them to have blessed life after the holocaust rather than a life cursed.

This is a hard teaching. How can we both be responsible for our actions and be incapable of choosing salvation? Romans 9 answers this question: "What shall we say then? There is no injustice with God, is there? May it never be! For He says to Moses, 'I will have mercy on whom I have mercy, and I will have compassion on whom I have compassion.' So then it does not depend on the man who wills or the man who runs, but on God who has mercy...So then He has mercy on whom He desires, and He hardens whom He desires. You will say to me then, 'Why does He still find fault? For who resists His will?' On the contrary, who are you, O man, who answers back to God? The thing molded will not say to the molder, 'Why did you make me like this,' will it? Or does not the potter have a right over the clay, to make from the same lump one vessel for honorable use and another for common use? What if God, although willing to demonstrate His wrath and to make His power known, endured with much patience vessels of wrath prepared for destruction? And He did so to make known the riches of His glory upon vessels of mercy, which He prepared beforehand for glory, even us, whom He also called..."

I think it is a hard one to accept, but I think the Armenian perspective seems too much like the belief I would prefer rather than the belief I find in scripture.

I'm in the midst of grading finals (450 Students: I'm about halfway done) and noticed a rather disturbing pattern. Either I have not gotten to my 450 students or my students are lazy. I don't know that there is any other alternative.

I assigned a problem on the final exam which requires the students to examine a C++ program and it's generated assembly. Then, to take three statements in the program and justify the calculations performed in the assembly. For example, given "int a [3
[2][3] of int
" in long form) explain the assembly for "a[i][i][i]". Anyone who's messed with C or C++ knows that the calculation involved is mechanical, but not completely trivial. It took me several days to work out all the rules via reverses engineering, but I taught the students those rules and they've had so much practice they should have them memorized by now (or at least should have by the final---it's probably lost already for some).

Anyway, the justification required means the students perform a short proof of the statement showing the raw address calculations that must be performed to calculate the array location. The second half of this, is going line by line through the assembly and showing that the same calculations are performed. At the end of each, you should have calculated the same address. In the simple example above, you would have calculated "a + i*24 + i*12 + i*4" where a would be replaced with some raw address (EBP-80 would suffice for the address here).

The great thing about this test question is that it is self-correcting. If a student gets a different calculation for the assembly than for the proof, the student knows there's an error and can go recheck her work and find the mistake and correct it. There's always the chance that you could make the same mistake in both places, but this is rare.

Okay, all of this is to get to the point that many of my students answered the question lazily or "cheated." (Cheated in the sense that they lied about what they found to match a bad answer, not as in committed academic dishonesty.) Some found different answers and then didn't bother to correct the error. Others obviously altered their interpretation of the assembly to match a bad proof calculation or vice versa.

It's not as if these students were out of time either. Only two students actually stuck around until the end of the test period. I have kept the papers in the order they were turned in and the first turn in came about forty minutes before the end of the two hour test period. Many of these lazy/cheating tests came in 15 to 20 minutes early.

Furthermore, it's not as if these students didn't understand what was going on. I gave them sheets giving detailed explanations of each assembly instruction included on the test for reference. Most of the papers were by students who did most of the work correctly, but made a simple mistake in their math or elsewhere that they could have corrected if they'd studied their solution further.

I am dyslexic, so I understand the frustration of making typos and math errors. I make them frequently. I am used to going back and fixing such errors. Perhaps this age of computers has aggravated the "spellcheck" problems that my high school teachers used to accuse my generation of being susceptible to (i.e., we couldn't spell if we didn't have spellcheck to save us).

Maybe we should start students programming in an environment where they have no garbage collector, no protection from resources, and where mistakes hang the computer. I learned on DOS and while the segfault did not exist, there were many occassions where an illegal memory access, deadlock, or write to BIOS resulted in immediate reboots or system halts. You learned pretty quick to be extra extra careful about wild pointers. Maybe we need more of that to help our students along.

I dunno, maybe like generations before me I'm just the masochistic old man saying, "When I was a kid, I had to walk to school through the snow, into the wind, uphill both ways, 50 miles, barefoot, over glass..."

About this Archive

This page is an archive of entries from December 2004 listed from newest to oldest.

November 2004 is the previous archive.

January 2005 is the next archive.

Find recent content on the main index or look in the archives to find all content.