3 ms·
I'll chime in to give a few anecdotal accounts of people I know. A lot of them have more of a biology background, and only took CS either out of an interest in
by lofatdairy 4y ago
I'll chime in to give a few anecdotal accounts of people I know. A lot of them have more of a biology background, and only took CS either out of an interest in computational biology research or against their will entirely. Generally, these are smart people with pretty solid math backgrounds, so I think the biggest problem for them was the matter of expressing themselves through code. It's generally not that intro CS problems are hard, but they were running into the problem where, if the program failed, it was unclear to them _why_. Even looking at the stack trace doesn't always helps these students, either because the stack trace expressed the common issue in a technical way, or because the stack trace points them in an unhelpful direction (e.g. not directly at a line in the code that they wrote that was wrong). While it's clear to us that the first step may be to check an unfamiliar error against stack overflow or use a debugger, these are learned skills too, which are often not taught even in intro level classes. There's also the learned skill of reading documentation and knowing what builtins are available and how they are supposed to behave, which gave some students trouble when using MatLab since MatLab functions are poorly named and are implemented inconsistently, the documentation is oftentimes unclear, and it's often their first time using a vector-based language (without realizing it) which adds a new dimension to behavior.
I'll add on here that it's not like my classmates were using esoteric learning languages like Racket (god bless the poor souls at NU), they were using Python, with plenty of helpful resources online and more experienced classmates. However, Python too has its quirks and reliance on perhaps unfamiliar concepts like packages (which means a new student will also need to learn how to use pip, why they don't need to use pip for the std library, etc). It's probably because of this that things inevitably get lost in the wayside, because you need to teach so much at once and the knowledge doesn't neatly project onto a linear timeline. It really is more similar to learning a new language, but add in some bootstrapping issues, as well as the fact that if your grammar is wrong or if you misspelled something then your entire construction is unintelligible it's not often obvious why.