- Joined
- Jul 18, 2019
On the topic of normies being unable to program, my alma mater used to do research on this topic. They gave everyone coming into CS1 a test (no credit attached, just for fun) to gauge how 'ready' they were to complete an introductory computer science course and also to gather data used in CS education research.
The subject matter of that test? Variable assignment. There actually weren't specifically wrong or right answers. Rather the metric used was whether or not a prospective student could form a consistent mental model of variable assignment. It didn't matter if the semantics you settled on matched a specific programming language, but rather whether or not you could mentally model the transformation of variables throughout the lifecycle of a program in a way that kept to the same logic from one question to the next.
Anyway, anecdotally every dude I knew who did poorly on the test later dropped from the program so I don't think it was complete bullshit.
EDIT:
To give you an example of the kind of questions you saw on it -
1. What is the value of i at the end of this program? Note - the '--' operator decreases a variable's value by one.
i = 11
j = i
j--
a. 11
b. 10
c. 12
d. None of the above
2. What is the value of y at the end of this program? Note - the '++' operator increases a variable's value by one.
x = 5
y = x
x++
a. 5
b. 6
c. 4
d. None of the above
For the above two questions, the 'correct' sets would be either (a, a) or (b, b). Other combinations would be incorrect - the key is to either model assignment happening by value or assignment happening by reference and stick to it throughout the entirety of the test. It was thought (and I'm not sure how much current research has verified this) that the ability to mentally model the transformation of data within a program is the critical 'secret sauce' required to be a programmer.
The subject matter of that test? Variable assignment. There actually weren't specifically wrong or right answers. Rather the metric used was whether or not a prospective student could form a consistent mental model of variable assignment. It didn't matter if the semantics you settled on matched a specific programming language, but rather whether or not you could mentally model the transformation of variables throughout the lifecycle of a program in a way that kept to the same logic from one question to the next.
Anyway, anecdotally every dude I knew who did poorly on the test later dropped from the program so I don't think it was complete bullshit.
EDIT:
To give you an example of the kind of questions you saw on it -
1. What is the value of i at the end of this program? Note - the '--' operator decreases a variable's value by one.
i = 11
j = i
j--
a. 11
b. 10
c. 12
d. None of the above
2. What is the value of y at the end of this program? Note - the '++' operator increases a variable's value by one.
x = 5
y = x
x++
a. 5
b. 6
c. 4
d. None of the above
For the above two questions, the 'correct' sets would be either (a, a) or (b, b). Other combinations would be incorrect - the key is to either model assignment happening by value or assignment happening by reference and stick to it throughout the entirety of the test. It was thought (and I'm not sure how much current research has verified this) that the ability to mentally model the transformation of data within a program is the critical 'secret sauce' required to be a programmer.
Last edited: