45

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 ...


34

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 ...


27

Maybe a bit too complicated, but fun nevertheless: Teach them about bitboards. Conveniently enough, a chess-board has precisely 64 squares, so a 64-bit integer can store one bit of boolean information per square. Now the whole state of the board (disregarding en-passant and castling for now) can be encoded by having one integer per type of figure and one ...


25

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. ...


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

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 line ...


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 ...


19

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 ...


17

Never. My parents sent me to programming courses when I was 7-9 years old or so, the 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 ...


17

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

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

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, ...


14

I would suggest you use a code review tool. This is something they will likely need to be using when working in industry. So worth upskill them on it now. You can use githubs one for free. (You are teaching version control so that should be easy enough) Get your students to create a pull request and review that. You can highlite specific lines and put ...


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. ...


12

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 ...


11

Because it's a meaningless obstacle Putting an upper limit on compilations is like telling a car manufacturer that they must build a new supercar, but are only allowed to test drive it a few times. This means that you're pushing your developers/mechanics to theorize about whether something would or wouldn't work, instead of actually finding out. ...


11

Another fun game is "Spelling Bee" from the New York Times (https://www.nytimes.com/puzzles/spelling-bee). You supply a file containing words. The student program reads the file and selects words that match the rules. The milestones are from a past project from Reed College. Print all the words that can be spelled using a fixed string (e.g. "...


10

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 ...


10

I do it the other way round: I encourage 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 functions prior to ...


10

Here is a concept but it works much better with visual feedback. Simulate a Pandemic. A pandemic requires a world with inhabitants that can be in one of several states, such as healthy, sick, dead. The pandemic spreads from sick inhabitants to "neighbor" inhabitants who are healthy. "Dead zones" stop the spread. You can also erect ...


9

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 ...


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, ...


9

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 ...


9

There are lots of international programming competitions for undergraduate students .Here are some of the well known competitions(not mentioned by you).As you didn't mention what kind of competitions you were looking for, here are some general competitions. I have provided links to past problems so you can decide which fits you best. 1.Google Code Jam Code ...


8

If your aiming for the IOI, the first step has to be figuring out how to get onto your country's delegation. In the USA (where I am), that means USACO. If not, then you will have to determine what that pathway is. Every country has some method of determining delegates. The next step would depend a lot on how those delegations are formed within your ...


8

Possibly prior to Buffy's wonderful answer, if the goal is to help students gain practice and fluency with the basic operations: Addition and subtraction without using + and -. Multiplication by 2s and integer division by the same. The Russian Peasant algorithm for more general multiplication. A string comparison that ignores case (presumably using ascii) ...


7

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 ...


7

My philosophy is "use professional tools" and creating an experience that is like being in real programming shop. The compiler can help you get rid of silly errors very fast without wasting time on unnecessary puzzling. If professional devs avail themselves of this, I think my students should have it. Anyway, most of the compilers we are using are OSS ...


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 ...


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