Hot answers tagged

142

You are battling the students' balancing act of their need to care about your subject and their need to get passing grades. Many students feel that: (Get it Wrong || Experiment) == (Failing Grade && Waste Time) As soon as a student feels that their time or grade is at risk, even for an interesting subject, they stop learning and jump straight to "...


131

I interact with high schoolers a lot, so I answer this question quite often. Keep in mind that 15 year olds are much easier to explain programming to than 50 year olds -- so you need not dumb things down or use far-fetched analogies. I usually start off with examples of what programs are: Apps like iTunes, Photoshop, Chrome, and games including console ...


126

I usually prescribe the same sequence for anyone who wants to learn programming. It's very theoretical, but it lays a good foundation. It should take three or four months of fulltime study, but programming isn't something you learn overnight. If you can't get through this sequence, you're not going to be able to program, so you might as well give up now. ...


120

You could present them a series of exercises, each one building on the previous while adding some extra element or twist to the problem, or investigating the issue from a different perspective, which reveals a weakness of the previous solution, requiring a new, different approach. This forces them to think about, analyse, modify and experiment with each ...


74

I explained it to my five year old with the following: Me: "You know how, in stories, people say magic words, and change things in the world?" Her: "Yeaaa?" Me: "That's what computer programming is." Her(quietly): "Wow." 15-30 minutes isn't enough to explain anything real, and explaining the underlying complexity is a sure way to make them run screaming. ...


57

A 15 years old person can understand any concept. I myself started programming at 14. (at school, many many years ago) 30 minutes is enough for a demo. Show her the magic of programming with something as widespread as a browser. Find a PC connected to the internet. (more fun if it's not yours, and even more if it's hers) Go to http://api.jquery.com/jQuery....


44

Several things that come to my mind: Give them assignments where they actually have to explain the code someone else (you) wrote. Understanding of the previous code or more specifically lack of it is both the largest cause and danger of cargo cult programming. Ask them to use comments, line by line if necessary, to explain your program in plain English (or ...


42

There are a few things that practically every beginner struggles with. Students need to know how to read code before they can learn how to write code. The sequential nature of imperative languages. People have trouble understanding that functions are executed in sequence, one item at a time, like a recipe. One way to overcome this is to show some code ...


38

Look at it in another way. This cargo-cult phenomenon is the novice stage of the Dreyfus Model of skill acquisition. This is how we learn. When I first learned to program, all I was doing was typing in pages of code from the back of Compute! magazine. Repetition is key. Babies learn to talk by copying the sounds they hear their parents make. Everything we ...


36

Describe what it is, just leave out the technical terms except for definitions: You have five jobs to do. You need to start working on all of them right now. Each job is a thread. You are the processor. Spend a little bit of time working on each job and then move to the next one, making sure you give attention to all of them. If you have more people, a ...


33

Math and programming are totally different things. Math is science, programming is technique. In academic world, programming is something you have to know so that you could deal with the real stuff, the one that's actually interesting and matters - algorithms. Who cares if the compiler is ancient and you use system calls? Who cares if you have Linux and not ...


31

Joining an open-source project is certainly one way to get started. However, I've been using open-source software for years, and quite frankly, the quality on almost all such projects is generally in the toilet. If you learn your programming and design skills entirely from them, you'll probably pick up some very poor ones along with the good ones, with no ...


30

The best way to get a non-developer up to speed quickly is to inspire them! To have any success, the candidate must be at least curious, if not passionate, about programming (regardless of the platform). While I agree with Joel in the case of the ideal candidate, I'd be careful not to cram too much theory into a weak mind - it'll only put them off. If they'...


27

To explain exception handling, explain the concept behind it: The code where an error occurs frequently does not know how to properly handle that error. The code that knows how to handle it properly could be the function that called that one, or it could be further up the call stack. When you write a routine that calls a routine that might throw an ...


26

Steps As an almost 15-year-old, I can confidently tell you that you should have a spectacular start. Explain what programmers make. (Games, simulators.) Show something cool you made. (On the computer. Please no command line - that seems to scare everyone.) Explain how you make it. Tell them you don't type in 10101010 all day. Tell them you don't even ...


25

I have taught introductory classes in the past and as I recall looking back now: Some students think programming is like that for different reasons. I remember once a good kid that cargo-culted a lot what I did: Believing that it was not an isolated issue, but other students in the same class might have similar behaviour or approaching to the problem and ...


23

To find a mentor, don't look for a mentor. Try to improve yourself in specific ways. If you work hard enough at getting better, you will both find that you come in contact with like-minded folks, and find that you have something in common with those people. Users groups are the likely place to find a mentor, but no one wants to help someone that is there ...


23

Did your students start at the correct 'abstraction level' at the beginning of the course? E.g. a homework that introduces them to the main programming structures like loops and conditionals without writing a single line of code? When I took intro to programming, our first assignment was called 'Rick the Robot'. We had a piece of paper with an aerial map ...


22

Hey Kid. Have you ever walked and chewed gum at the same time while thinking about Pokemon? That's your brain multi-threading.


20

What you're asking them to do is demonstrate analysis and synthesis in the cognitive domain of Bloom's Taxonomy, where they're currently only demonstrating application. Unfortunately, it's sort of a "lead the horse the water" type of situation. Analysis and synthesis are also very difficult to do when you are still struggling with comprehension. Without ...


19

Have you taught programming before? I taught programming to CS and non-CS majors for four years. The first semester, my experience was like yours, until I learned a few things. What seemed vacuously simple to me was not at all simple to the beginners. Regardless of language, you need to put a mental framework in place - things so obvious you don't even ...


19

Computer science is to programming what physics is to carpentry. If you want to become a carpenter, studying physics is not going to make it happen. It will teach you a lot of interesting things, that you might be able to apply to your work, but it won't teach you how to be a good carpenter. For that, you will have to learn the craft of carpentry. ...


18

If you go in starting to talk about things like process, patterns, requirements, and the such, she is going to shut down immediately. Kids today are graphic and visually motivated, so I would bring something in to help promote those types of stimulus. Show her something snazzy on the web and then on a high level describe to her what makes THAT happen. I ...


14

The types of people who make really good mentors usually have a dozen or so juniors yapping for their time at any given moment. So, "finding" the right mentor is just the beginning, you also have to make mentoring you more attractive/rewarding than mentoring somebody else. So, step one is to join communities where you are likely to meet good mentors. Step ...


14

Don't Tell them "C#" and if they follow through they'll figure it out. There's no point in explaining it in a vacuum. [or tell them "Java" so they won't come to you for help!]


14

.NET for the Non-programmer Programming - Basically telling a computer what to do and how to do it. Source File - This is a document written in a programming language that tells the computer what you want it to do. Programming Language - This is a language that (usually) resembles a mixture of English and math. It is both simple and strict enough for a ...


14

There are two great analogies I rely on when explaining the work of programmers. One is a recipe; that metaphor is useful for explaining on a small scale what each line of code is doing. The work of a programmer is writing the recipe, and the computer is the cook. The other analogy is that a big program is like a big company. There's a whole bunch of ...


13

Like most things, exceptions and exception handling will likely seem like a solution in search of a problem to new programmers until you show why the seemingly simpler solution (C-style return codes and errno) works so poorly. I would start out by motivating the problem and putting it in context. Show how error handling could be done using return codes or ...


12

Join an open source project. You don't necessarily have to program for them either. Most projects would love to have someone help with documentation. You can look at the code and ask questions. When you fell comfortable your can start to write code for them.



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