Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Education Programming

Resources for Teaching C to High School Students? 166

mctk asks: "I'm a high school teacher who, disappointed with the lack of computer science in school, has promised to teach a few motivated students programming after school. As an enthusiastic novice with three semesters of C under my belt and a few side projects worth of experience, I feel competent yet ignorant. I would really appreciate suggestions for resources on C that are written to be accessible to high school students and contain lots of ideas for activities. Perhaps you've had success with a series of books that spans beginner to advanced? Do you have any activities you would recommend? How would you map a student's first year of coding? I welcome any and all suggestions. While we're on the subject, is there a brace style that is most standard in the industry?"
This discussion has been archived. No new comments can be posted.

Resources for Teaching C to High School Students?

Comments Filter:
  • by kestasjk ( 933987 ) * on Friday December 15, 2006 @06:49AM (#17252656) Homepage
    But don't teach them C. Teach them a language that focuses on how to structure programs without bogging them down with memory management, pointers, etc, etc. A firm understanding of OO would also be much more useful and much easier to grasp.
    There's a reason there are so few resources on teaching C to high school students; it wasn't meant to be taught to high school students.
  • in high school... (Score:4, Interesting)

    by defy god ( 822637 ) on Friday December 15, 2006 @07:48AM (#17252994)

    In high school, I took an AP Computer Science class that taught C++. If I understood then what I understand now, learning C++ would have been a whole lot easier. My teacher focused too much on the language instead of concepts.

    After several failed attempts at trying to learn how to program, I finally understood basic concepts such as variables, integers, arrays, etc. I then took a more basic computer science class, "Algorithm Design/Problem Solving," that used the book Programming Logic and Design [amazon.com]. This book does not use or concentrate on any specific programming language. All our assignments were done in pseudo-code and we had to show the logic of what we wanted accomplished. I have to admit it was a lot easier trying to convey the logic without having to worry about the syntax.

    It's been a couple semesters since I've taken that class, without any programming in between, and now I've picked up The C Programming Language [amazon.com]. I am currently half way through the book and ,I must say, I finally understand and appreciate the concepts being taught. I wouldn't quite recommend this book to the pure beginner, because it assumes knowledge about basic concepts such as variables, compiling, etc. The book, at a little less than 300 pages, is written and presented much better than the 1000+ page programming books I've run across.

    If I were back in high school, I would love to have these concepts introduced at a gradual progression. Basic programming concepts -> Logic & Design w/ pseudo-code -> the actual language of choice using an easy to learn (30 minute intro) compiler. Of course, hindsight is 20/20 and I'm not too sure if I would have paid as much attention to the first two concepts. Since you are teaching in a high school, I take it you have 2 semesters to teach the class. Perhaps dedicate the first half of the first semester with logic. You can have them play different logic games and tie that in with the lessons.

    Creating a good foundation makes learning and teaching a whole lot easier.

  • C IS a learning tool (Score:2, Interesting)

    by Iwanowitch ( 993961 ) on Friday December 15, 2006 @08:51AM (#17253396)
    We had C during our Computer Architecture classes. The fact that it translates easily into assembly and machine code can be a benefit.
    One of the coolest things we did was to write an asm method, write a C program that uses it, compile them with -O0 and debugging info, and then link them together manually, load them in a debugger and see what exactly happens. Not something you should do in your everyday life, but a fantastic experience.
    However, I agree that it's not a language to teach day-to-day programming with, or to start learning to program. There are a lot of better languages for that.
  • by edwdig ( 47888 ) on Saturday December 16, 2006 @01:16AM (#17265822)
    If you go heavy on the pointers, you will either greatly improve their understanding of things, or completely scare them away. My girlfriend took a class once that essentially covered how to use computer programming to apply engineering concepts. The course had knowledge of C as a prereq, so she asked me to teach her. She really enjoyed programming and kept pushing to learn more until we hit pointers. At first she was ok, until she encountered her first pointer error. Once she understood what happened, she instantly realized all the potential errors and complexity that pointers introduce. At that point, she said to me "How do you deal with this all the time? I could never do that." Shortly after that, the teacher realized that no one in the class knew how to program, and changed the class so that you could do everything in Excel. That was the end of her programming. She wouldn't even consider learning something easier. This was without me ever even implying anything about pointer math. I don't think I ever got to pointers to pointers.

    Anyway, my advice is to delay introducing pointers as long as possible.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...