I think this is a good question and answer in the sense that it reveals a fundamental misunderstanding on the part of the student - exactly what you hope an exam would do! (Except for how this seems to combine javascript’s .length and python’s print statement - maybe there is a language like this though - or ‘print’ was a javascript function defined elsewhere).
This reminds me once of when I was a TA in a computer science course in the computer lab. Students were working on a “connect 4” game - drop a token in a column, try to connect 4. A student asked me, while writing the drop function, if he would have to write code to ensure that the token “fell” to bottom of the board, or if the computer would understand what it was trying to do. Excellent question! Because the question connects to a huge misunderstanding that the answer has a chance to correct.
To add on to exam reference languages, this is valid ruby
It’s obviously:
Traceback (most recent call last): File “./main.py”, line 2, in <module> AttributeError: ‘str’ object has no attribute ‘length’
print("x")
is you want to screw your students.screw your students
ಠ_ಠ
“Dr. Prof. Mann, I really didn’t understand anything about UNIX on that last midterm. Can we go over how to
touch
andfinger
after class?”
They missed out the context code:
trait DoW { def length: FiniteDuration } object Monday extends DoW { override def length = 24.hours } ... implicit def toDoW(s: String): DoW = s match { case "Monday" => Monday ... } var day: DoW = _
(Duration formatting and language identification are left as an exercise for the reader)
Works even better in Ruby, as the code as given is valid, you just need to monkey patch
length
:#!/usr/bin/env ruby module DayLength def length if ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].include? self "24 hours" else super end end end class String prepend DayLength end day = "Monday" x = day.length print(x)
Code as given can be made valid in scala I believe. My starter was based on that assumption. I think raku can do it too, but you would probably have to
\x = $
to make it work…Edit: misread your comment slightly, CBA to change mine now. It is what it is
The answer is 6. It’s 6 characters long.
Not really, no. That would be the answer if x= len(day). The code in the image would just throw an error.
Yea, it’s pseudo code.
“Monday”.length is working JavaScript and does equal 6. No print command afaik though.
There technically is!
https://developer.mozilla.org/en-US/docs/Web/API/Window/print
Well. In browsers, anyways.
function print(str) { console.log(str) }
FTFY
no it wouldn’t, because this is OCR reference language
What the heck, did someone invent a programming language, so students wouldn’t have to learn any real ones?
Having done OCR GCSE computing:
It’s just a pseudocode style language that they use in exam questions so that you can understand the question regardless of which language your school had you study (in my case it was VB6 💀). In questions where you are asked to write code, you can use the reference language but realistically you just use the one you learned (although I did it all in python instead)
Huh interesting. In Scotland we had another one: https://en.wikipedia.org/wiki/Haggis_(programming_language)
How do you know what language this is?
Is it wrong that I’m stuck trying to figure out what language this is?
Trying to figure out what string.length and print(var) exist in a single language… Not Java, not C# (I’m pretty sure its .Length, not length), certainly not C, C++ or Python, Pascal, Schme or Haskell or Javascript or PHP.
OCR exam language, a pseudocode format.
This could run in Javascript if you setup print as an alias for window.alert or console.log
It can run in regular JS;
print()
just prints the page (ignoring the passed value).undefined
The QuickJS interpreter has
print
as a built-in alias forconsole.log
.
I’m very much guessing that this is just supposed to be a type of pseudocode given the context and vagueness of it.
It’s a big reason why I really dont like pseudocode as instruction to people learning the basics of what programming is. It made more sense 20 years ago when programming languages were on a whole a lot more esoteric and less plain text, but now with simple languages like Python there’s simply little reason to not just write Python code or whatever.
I took an intro to programming class in College and the single thing I got dinged on the most is “incorrect pseudocode”, which was either too formal and close to real code or too casual and close to plain English.
It’s not a great system. We really need to get rid of it as a practice
Especially since python is right there.
I mean once you get beyond bash-like scripts python is esoteric as fuck, adding oop to what is essentially a shell is a terrible idea
That said, there’s plenty of languages with good syntax that is still good when you get into more complex stuff (modern C#, scala, kotlin and more)
The only thing esoteric about python is the bolted-on typing and anything behind a double underscore.
So yeah, it’s there, but in front of the curtain it’s practically pseudo code.
I think you’re missing the forest for the trees here pretty heavily.
Yes, Python has some goofy aspects about managing it while performing high level, in depth tasks.
This is a post and a comment chain about pseudocode being taught to people who likely just learned what a “programming language” was several weeks ago. Essentially no one taking the GCSE knows what “bash-like scripts” even means.
What part(s) of python do you think is esoteric?
Wut
Reminds me of 7th grade math class, chapter on estimating. Assignment was “Estimate the following values” with problems like 42+28=? or 14*3=?
One of them was 6*7=? Which having memorized my times tables in 4th grade like they told me to, I knew off the top of my head that it’s 42. I wrote that. And it was marked wrong because I was too precise.
Just pseudocode.
JavaScript has
[
].lengthdoesnt have
print
nor allow variable declaration without keywordsprint()
will print the text to a physical printer with paper and everything. Don’t confuse it withconsole.log
and use it in a loop.it’s so rough learning this by accident
It would have print if it was previously declared as function.
Also, js is as dirty as you want it to be. Keywords are indeed not necessary for declaring variables.
JavaScript is the language of the assassins, with its infinitely modifiable prototypical setup
Nothing is true
true !== 1
true
true + true + true === 3
true
Everything is permitted
[]+[]
''
My headcanon: it’s a language that gets executed by a LLM. Whatever you write, if the LLM can make sense of it, it will execute it.
The output may well be “24 hours”.
That recurring puzzle is among the most interesting aspects of this community, IMHO.
It’s weird that people are so focused on it. It’s pseudocode, and it’s purely meant for day one comp sci students to grasp how data is stored and processed, before they are forced into writing Java, most likely
Most irritating aspect of switching languages. How are switches done in this one again?
•Searches web•
Ah yes
This is quite a cheap answer but maybe it’s just pseudo code. We had exercises in university about pseudo code with examples that intentionally broke all syntax systems and conventions to show that not everything has to be executable that you write down in a theoretical computer science homework
It’s a shitty question. It’s implied by the fact that “24” is wrong that the answer is “6”, the length of the string “Monday”.
In some languages dot access on objects could give you the properties of the object type (things pertaining to a “day” object) but this would still be ambiguous since a day’s length can be measured in many different ways.
In others, it would require you to call length as a function (.length()) or not be available at all, or require you to pass the object into another function [ length_in_seconds(day_x)]
I think the question is fine, but we have to assume they covered this type of method prior to the exam, where .length would result in the character count of a String.
It could be Ruby;
puts
is more common, but there is aprint
. With some silly context, the answer could even be correct:#!/usr/bin/env ruby module DayLength def length if ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"].include? self "24 hours" else super end end end class String prepend DayLength end day = "Monday" x = day.length print(x)
Same thoughts I had.
- Language which allows variable declaration as
name = value
without any keywords or its a variable declared outside of the example - Has lowercase
.length
and not.len
or other .length
is also a property and not a method? Assuming convention.length()
for method call likeprint(x)
- Language which allows variable declaration as
Why not Python? Because it needs print(str(x))?
It’s len(str) in Python. Not str.length.
Ohhh thanks
Trick question?
attribute error
Poor question more likely
I am currently looking for job opportunity and amount of gotcha type question i see in OA is just something else.
I can’t imagine that’s any fun to deal with.
“You should have known what the intent of the question was. Management won’t know or care about the internals of your code as long as it meets requirements. You have failed this test.”
Or
“You should know that you’re calling a function with invalid parameters. Where did you get your CS degree from again?”
“You should have known what the intent of the question was. Management won’t know or care about the internals of your code as long as it meets requirements. You have failed this test.”
“You should know that you’re calling a function with invalid parameters. Where did you get your CS degree from again?”
sigh you can have your ransom, just remove the cameras.
Do we know it is Python?
looked into it, gcse cs uses python in syllabuses.So, most likely
no the school can realistically choose any sensible language, the one in the exam question is a pseudocode one that is used only to make the exam questions understandable regardless of which language you studied
Are they using a red pen to write the checkmarks for correct answers to make it confusing but logical at least?
Grading in red is generally avoided, nowadays. Red is closely associated with failure/danger/bad, and feedback should generally be constructive to help students learn and grow.
I usually like to grade in a bright colour that students are unlikely to pick: purple, green, pink, orange, or maybe light blue (if most students are working in pencil). Brown is poo. Black and dark blue are too common. Yellow is illegible. Red is aggressive.
Anyway, I’m guessing they just graded everything in green. The only time I’ve ever graded in more than one colour was when I needed to subgrade different categories of grades, like thinking/communication/knowledge/application. In that case, choosing a consistent colour for each category makes it easier to score.
Nah, just using one of those handy pens with blue, black & 2 red ink. ;)
does it give reference to what language this is in?
x = string length of “Monday” => 6
passed my gcse?
I wonder if day length is given separately in a table prior to the question? I’m not sure what they wanted except maybe seconds?
It’s the length of the string. The number of characters is 6. It’s a play on words and a question.
Oh wow. Thanks
I’m assuming they wanted the literal length of the string
That seems to be the consensus.
Naw, they wanted the metaphorical length. Computers are great at metaphors.
Conversations about language aside, the error is that “Monday” is a string with a length of 6.
What is the type of the variable
day
though? As it is we have to make multiple assumptions, based on popular programming languages, about the internals of thestring
type and theprint
function to assume that it prints “6”.There is a fairly good chance that there has been more info presented in the class than we have been given here.
deleted by creator
That’s the variable name, not the type
hours = 0.25
There. I fixed it! :)
The future is not yet young man.
For 1 hour = 4^(-1) characters