39

Let me urge a bit of caution if you try to combine teaching of youngsters with their parents. Before you decide, you should look at the work of Piaget on the stages of development. Adults and teens from about 12 can learn abstractly, but those younger probably haven't yet developed the changes in the brain (including physical changes) that make that possible....


36

Rules like this are generally instituted because the teacher is attempting to teach a concept made moot by one of these constructs. For example, as a teacher, if you're teaching bitwise operators and ask students to implement absolute value, it simply makes no sense to permit the students to use whatever library function does absolute value. You're teaching ...


31

I think the intent of such courses is to teach Computational Thinking, not programming as such. Programming is, I think, just one tool among others. There has been quite a lot of activity recently on computational thinking, which is a good thing. Any "patterns of thought" that can be distinguished and taught seems to me to be a good thing. We teach math ...


23

You can find a fair amount of information about accredited programs in the US here, including links to schools that have one or the other programs. In general, Software Engineering is more directed at the processes involved in creating software, and Computer Science is more generally focused on the underlying theory. But, I'd suggest that both programs ...


22

I think that the rationale is so you don't have to introduce arrays and array notation on day 1. Typically, arrays enter into the picture at roughly the same time as loops, which would take place a few weeks or months later, depending on the pacing of your course. That said, if you want to start with command line programs, it's not a huge problem to do so. ...


20

The minimum age I honestly don't think there is a minimum age. While it's true that very young children have a harder time thinking in abstract terms than adults, it does not mean that children are incapable of it. For example, I started teaching my daughter very basic shell commands at 7 years old. She's now 10 and is relatively fluent with the command ...


20

Where it stems from is, of course, because the lab is not the thing that the instructors want solved. After all, the lab problem is not an unsolved problem, and it will only be unique (if at all) in some surface way. This is the source of the feeling that people have that the restrictions are unreasonable: they feel like solving the lab is somehow the ...


15

This is a much less useful answer than I wanted it to be, but I'm posting it in case it helps someone. I'm not a teacher, but I've found that most 13-year-olds can learn to program using production languages (Python's a good one). However, I'll regale what I remember of my experience learning my first programming language. (WARNING: Tangents ahead.) On a ...


14

Because, traditionally, programs iterate over data. See JSP. Admittedly, prompting the user for data is weird, however we're talking about beginners here, having them try to remember what the different fields of data they have to enter isn't the point of the exercise, and is likely to make them view interacting with computers as needlessly complicated. As a ...


14

Because everything around C language education is just utterly awful. That's really all there is to it. scanf should not be taught, but it is. It's rarely useful, and you can discover it on your own if you need it. gets should not be taught, but it is. It's not even part of the language any more for the past eight years. I say this as one of the folks (...


14

Why teach English or art at a young age? Because it's a mode of expression and communication. Because proficiency requires learning the tools, learning the idioms, experimenting and developing a voice and a style. Because that path of development takes years if not decades. Although many students won't choose to make coding a major part of their adult lives, ...


13

Never. My parents sent me to programming courses when I was 7-9 years old or so, first half of the 80s. Completely useless knowledge today, but that is not the worst part of it - the worst part of it is that at a time when I should have learned to interact with other humans I spent a lot of time in front of a computer. I also took the STEM way through ...


12

From my experience, you don't get good at coding while in college. You'll learn to code, but writing good code comes, in my opinion, much more from experience than education (and I say this as a student who has work experience). These two majors focus more on things around the code, so choosing your major will really depend on what you want to do next. ...


10

From my own experience tutoring young CS students, user input is actually a tricky concept. If it were not for user input, the results of any program could be pre-compiled into nothing but its output. You get one lesson from getting all the input right at the beginning, with argc/argv, but from that point on, its just the computer churning. You get a ...


9

Careful! That's a pretty aggressive statement, and is liable to make folks who really do have trouble feel pretty bad about themselves. You may want to take a look at this question. Whether you believe the answer to ultimately be yes or no, you will find that even the most adamantly "no" teachers admit to some number of students who have enormous ...


9

The only way to learn a lot of things, maybe most things, is practice and feedback. In a standard course (not online), the professor assigns some work to do - homework, projects, .... The professor then gives you feedback on it - grades, but hopefully more. To learn on your own, you want to try to simulate this as much as you can. So, to learn something, ...


8

According to me if people interested in this then nothing is difficult for them. This is a dangerous viewpoint, and I strongly urge you to reconsider. Many students find programming difficult. If you tell them that it should be easy, then you're going to dissuade them from pursuing it. "This programming stuff is really hard for me. My teacher told me that ...


8

I do it the other way round: I enourage my students to compile and test very often! Of course, just changing random lines of code until the result seems to work is not a good idea and this should be avoided. I try to encourage thinking about the code by writing the essential parts in pseudocode first and writing the documentation of funtions prior to ...


8

I think that the answer of thesecretmaster is correct but let me add a bit of advice to an instructor who would do this. Just as you, the OP, wonder yourself, the rule doesn't seem to make a lot of sense and it won't make sense to students either. It may cause resentment. So, if an instructor wants to use a rule like this then, I think that a general rule ...


7

You certainly don't need a list longer than this one. If you do even half of this you will have learned enough to know pretty much what should be next. Having a complete list now gives you very little. What you really need is practice and feedback. For practice, find some significant problem and build a program to solve it. Use the best methodology you ...


7

This might be a mistake, actually. Everyone is different. People like doing different things. Programming isn't for everyone, nor is the wider world of Computer Science as a whole. My daughter, for example, is perfectly happy as a Philosopher. My son is perfectly happy outside academia. Convincing someone to do something (a kind of advertising) may do them ...


7

The idea is that I somehow make it sound... too easy? Like it should be obvious. But when it doesn't immediately click, it makes the listener feel stupid. And that's when learning stops and inecurities kick in. This reminds me of the first time I was teaching an intro to programming class and I was going through a live demo of how some code worked. I ...


7

Obviously your friend is using a bit of hyperbole, and in truth, however annoyed you may be by his blithe dismissal of our entire field, he may not be open to being persuaded. You may have to resign yourself to not "winning" this argument. From what you've written, this is what I suspect is the real answer. For what it's worth, he's not, strictly speaking,...


6

I suggest looking into Growth Mindset resources, both to understand why students feel this way and why others excel despite facing difficulties. One way I help students get past that initial hesitation is to implement the Lifelong Kindergarten method from the MIT Media Lab. It's the 4P method: make projects, on a topic that you feel passionate, with your ...


6

I've been using Kotlin for two years now on an introductory course on imperative programming (bachelor's first semester) and I'm very happy with this decision. Before Kotlin, I was using Java for the same course. Here are some of the benefits: No need to explain what are classes on a imperative programming course, since Kotlin programs can only have a main(...


6

Back in my day (which wasn't that long ago), many of the tests for my programming courses involved writing code on a piece of paper, with a pencil. In this environment, I couldn't rely on the compiler at all. Your teachers might not want to do this because it involves a lot more hands-on grading, which might not make sense for your class size. I can also ...


6

There is a lot to unpack here, but first, YES, the teaching methodology can be improved, but that is always true, an unending quest. Next, I'll note that C is a language with enough pitfalls that many people struggle with it at the detail level, finding it harder to think more globally. My preference, perhaps not open to you, is to start with a language at ...


6

Ultimately they need to understand both ways. Which you do first seems to be a matter of preference - or maybe just following the textbook. They need to understand at some point that 'main' in C is an interface with the OS. But, since you can't teach everything at once, you have do pick the order of instruction. But teaching command line params later can ...


5

Everyone finds some things hard. It differs for different people depending on their background and their interests. But it also depends on the quality of their teaching. More important, some people catch on to new things more quickly than other things and more quickly than other people on a given task. I wouldn't be likely to tell a student that this is so ...


5

Others have already said well why you shouldn't dismiss the difficulties of your students. I'll address this other portion of the question: How can I convince my students that programming is not as difficult as they think? By making it easy. Easy things are those that conform to our mental models, so every person has easy things different from those of ...


Only top voted, non community-wiki answers of a minimum length are eligible