Stuck at 50–60% in concepts of programming languages course quizzes/tests, not sure what I’m doing wrong
Posted by everydayreligion1090@reddit | learnprogramming | View on Reddit | 12 comments
I'm taking a Concepts of Programming Languages course (syntax/semantics, type systems, imperative vs functional, etc.) and I keep getting around 50–60% on quizzes and the midterm.
I do study, and I understand things while reviewing, but in the actual exam I get stuck between two answers and usually pick the wrong one like it feels like I recognize concepts but don’t fully get them
The exams are mostly multiple choice and focus on understanding, not memorization, which might be where I’m messing up... but Im not sure if the final exam is going to be multiple choice so I need to prepare for thr worst
Has anyone dealt with this kind of course before? How do you actually study for it and get past that 50–60% range and into the 90-100% range?
aanzeijar@reddit
Impossible to answers without seeing sample questions you failed. Maybe you're misunderstanding some concepts?
everydayreligion1090@reddit (OP)
Sadly the mid term and quiz #2 dont permit reviewing the questions
but here are the questions for Quiz #1:
https://ibb.co/tS8bR7J
https://ibb.co/8D2Xd7Fn
https://ibb.co/FLkd7Mhy
https://ibb.co/dsBFwqw3
https://ibb.co/j92qW6Rm
https://ibb.co/hJVZWnn4
aanzeijar@reddit
Ugh. I hate questionnaires like this. Question 5 is misleading because in conflates different types of aliasing. Please forget that question and the stated true answer.
For the others, you seem to have bad intuition about how code behaves in multiple languages.
My guess is that you do not have a strong internal model of what programming languages do when presented with weird or unnatural code. This is typically a sign that you only learnt programming as a way to express "sane" programs, but never had to deal with edge cases in the languages themselves.
You're not alone in that. I've had a discussion with several senior coders about whether x is guaranteed to be initialised in the following example, and we had to resort to the C++ standard to settle it. (I leave the answer for the peanut gallery to find):
In any case, unless you specifically want to get into compilers, language design or code reviews and auditing, I wouldn't take the results of this test seriously. If you still want to get a better intuition about what languages do, you'll have to get into the mindset of not guessing what something will do, but to actually check with the language specification, and to explore the myriad of weird things that happen if you do that. Maybe watch the wat video as a starting point.
everydayreligion1090@reddit (OP)
Ill give the video a watch but what I got from you is:
I have to figure out EXACTLY how the language behaves, especially in edge cases, by checking and testing it myself
Right?
aanzeijar@reddit
Figuring out is way forward. The end goal is that you can argue about what the language will do in a specific situation by knowing how it works in most situations without having to figure it out.
dmazzoni@reddit
Does the course have any programming exercises?
Honestly I hate courses like this because they bear little resemblance to the real world. If you get a job as a programmer the important thing is building software that works, not memorizing terms and definitions.
Yes, you need to know stuff - but it’s “open book” - you can look up anything whenever you need to.
However in terms of advice, the best way to learn things is to use them. If you try to memorize the syntax for a function then a slightly wrong answer will look right. If you write lots of code with functions, then sooner or later you won’t be able to forget.
everydayreligion1090@reddit (OP)
>Does the course have any programming exercises?
There's examples in the slides but Im not really sure how to learn from them, don't have a clue how to
Like you said I need to use them but I havent figured out a good way to use them
dmazzoni@reddit
The best way is to type in code and run it to see what happens. Then keep doing that again and again. See what happens if you change something. Make it do something else.
It’s unfortunate that your course isn’t structured that way, but that’s how most of us learn programming - by actually trying it out.
peterlinddk@reddit
If it is multiple choice, then record all your wrong answers, and spend some time afterwards analyzing what you got wrong, and why you answered the way you did, and what you need to know in order to distinguish between the correct answer and the one you chose.
If you don't have the option of going back through the questions, make a screen-recording or something. Then re-take the test a few days later (days you don't spend studying at all), and check if you get the correct answers this time. And again, if you can't re-take the test, then make a recording and replay or replicate it somehow, so you don't get shown the correct or earlier choices, but have to "pretend to re-take the test".
And the auto-moderator won't allow me to use the actual word, but you should get someone to study with, preferably a group (four people seems to be the best) and sit down and go through the questions with each other - discuss why you know which options are wrong answers.
Preparing for multiple choice exams is a lot different than preparing for written or oral exams, even when the curriculum is the same, so get in touch with your teacher or a guidance counsellor, and make sure that you know how any future exam will be! As soon as possible after the semester has startet - maybe even before.
deleted_by_reddit@reddit
[removed]
AutoModerator@reddit
Please, ask for programming partners/buddies in /r/programmingbuddies which is the appropriate subreddit
Your post has been removed
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.
BeginningOne8195@reddit
That usually means you’re close, but not fully confident in the “why” behind answers - trying to explain concepts in your own words or doing more practice questions tends to make that gap click.