12
$\begingroup$

In my experience (working with college freshmen mostly), I've tried to emphasize precise vocabulary about the concepts and syntax related to creating and changing variables. This is wording like:

  • identifier
  • declare
  • initialize
  • assignment
  • token
  • execute
  • compiler

My reasoning is that these words are immediately necessary to understand error messages, intermediately necessary to Google things, and necessary in the long term to communicate to other programmers.

However, some teachers I've talked to try to avoid this type of language because they feel it introduces another barrier to their students' understanding. I guess they'd say I'm trying to introduce compiler concepts too early.

What's your view? How do you know when there's too much jargon?

$\endgroup$
  • 1
    $\begingroup$ The introduction to medical study is largely vocabulary and anatomy. I don't see why CS should be any different. The distinction between 'defining' and 'declaring' brings out many issues, like when something is being used as a parameter or argument. These issues cannot be ignored, they matter. $\endgroup$ – user737 Jul 17 '17 at 18:37
10
$\begingroup$

Some of these words are entirely necessary, some (such as tokenize) you might want to avoid early on. However, I would suggest this as a guiding principle: use vocabulary as is necessary to get at the core goals you hold for your students, but do not emphasize vocabulary for its own sake. A great visualization or metaphor at the very start (after all, freshmen!) will take your students much further along than a series of fine distinctions.

Here is a fun little article about 10 Extremely Precise Words for Emotions You Didn’t Even Know You Had. The title is correct; when you read through the article, you will find emotions that you have experienced, but never described. Nevertheless, you were able to experience the emotions perfectly fully.

Similarly, with the help of a great diagram or metaphor, students will be able to utilize concepts that are more advanced than they can fully describe. That's okay - great even! - and later coursework can help them nail down finer distinctions as they advance.

$\endgroup$
6
$\begingroup$

Certainly mention the vocabulary, but I wouldn't make it mandatory to learn the words or use them correctly in class. What matters is that the students understand the concepts that go with the words, not that the know the dictionary definitions.

Introduce all the vocabulary when it comes up in class, but don't be a stickler, especially early on. Let the students get a feel for the different types, so that they have concepts to associate the words with, rather than associating the words with (possibly incorrect) ideas.

I'd also make sure to draw the distinctions when talking about the different types, so that the students mentally understand the different types conceptually before actually assigning vocab to the concepts.

$\endgroup$
4
$\begingroup$

Commonly, the jargon I see in class (former student, new to being a teacher assistant) is meant to serve one single purpose: increasing student understanding.

This seems relatively straightforward, but it is not as simple. The jargon is meant to make expressions and keywords easier to explain.

If one explains the jargon ahead of time (each subject has its related jargon explained before delving deep into the material) then one can use the jargon while teaching, which is a powerful aid.

If you explain what you mean by "declare" and "identifier", then whenever you use those words, it's as if you used the "new" keyword in java. Java knows exactly how to deal with that keyword. Your students will know precisely what to do when you say "create a declaration for so and so with an assignment to such and such...". This worked wonders with students I have worked with.

The key point is to explain your jargon.

$\endgroup$
4
$\begingroup$

It's a balance, as with all things. Concepts are of course more important than vocabulary, but it's awfully hard to convey your questions and ideas without vocabulary. Just look at some old math papers (like, really old, before the invention of the plus sign old) to see what I mean.

A couple of checks to make sure concepts are coming first:

  • Make sure they know what the vocab means. I've read books where jargon and words were used in a confusing and improper manner.

  • Make sure they can generally explain without the vocab to another person, maybe not in your class. That's often the true test of understanding. There's a great story about Richard Feynman that he was trying to prepare a lecture on an advanced topic for an undergraduate audience, but he later told a faculty member that he couldn't break it down to that level, meaning that he didn't understand it well enough.

A couple of checks to make sure they know enough vocab:

  • Can they figure out most compiler/interpreter errors? (Most) Python errors, for example, are fairly clear, so if they know some vocab, they should be able to figure most out.

  • Can they find the answer to their problem using google? A student who is having a problem with a for loop but does not know that it is called a for loop will have a hard time finding a solution.

  • Can they follow the discussion in a simpler scientific paper, or later chapters in their textbook, or are do they have to keep a dictionary by at all times?

$\endgroup$
3
$\begingroup$

Use the vocabulary for the things that are directly relevant to what the students are learning, so they can intelligently talk about what they are doing. This means that students should definitely know the verbs associated with programming. Variables need to be declared, objects need to be instantiated, and programs need to be compiled/interpreted. You can't really talk about code without these.

What about the nouns? I usually don't focus much presenting on these. Unless the they aren't native English speakers, students will (eventually) understand what an identifier or token is without much input from the lecturer. There are nouns you should obviously go over, however, such as variables, objects, and data type.

$\endgroup$
2
$\begingroup$

I think it's actually really important to use the jargon and stress understanding. A lot of the common mistakes students make have a root cause of misunderstanding the difference between, say, declaring and calling a function.

If students have the vocab list and the jargon at their fingertips, it makes it actually possible to have debugging discussions that will help students learn.

$\endgroup$

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.