I'm going to be teaching the AP computer science course next year and I was thinking:
I was first taught things like loops, and sorts, and other such operations before I was taught things like classes, and what an object really is. This seems to me the reverse of what we ought to do. I was thinking I would teach the class first by giving definitions, and not get into actual programming until people know what they're doing. I don't want people typing "public static void main" until they know what public, static, and void all mean. Once people can get a few classes talking in very simple ways, then I thought I'd get into things like for loops, logic, and sorts. What I'm wondering, is if people will be able to understand the way classes interact, without really knowing the basics of programming. I'm thinking they will.
Thoughts?
I've heard it takes forever to grow a woman from the ground
James Chegwidden
Author
Ranch Hand
Joined: Oct 06, 2002
Posts: 201
posted
0
Nick,
I teach Java at a 2 year college and have been involved with the APCS program as a reader.
1. Do you have any idea at all what they teach in the course. Go the the college board web site and find out.
I like were you are heading but I think you will be wasting your time. There is alot to cover in the A and AB tests. It goes at at fast pace. I am afraid you would fall behind.
Suggestion: Teach Java at a two or fouryear college as an adjunct. Then you can really show them about what I think you want to do.
Once again just my opinion. Good Luck. I hope I have a chance to meet you sometime at Clemson. [ April 14, 2005: Message edited by: James Chegwidden ]
Mr. C<br /> <br />Author and Instructor<br />My book:<br /><a href="http://www.aw-bc.com/catalog/academic/product/0,1144,1576761614,00.html" target="_blank" rel="nofollow">http://www.aw-bc.com/catalog/academic/product/0,1144,1576761614,00.html</a>
Sorry I didn't respond, I completely forgot about this thread.
Ilja Preuss
author
Sheriff
Joined: Jul 11, 2001
Posts: 14112
posted
0
Originally posted by Nick George: I was first taught things like loops, and sorts, and other such operations before I was taught things like classes, and what an object really is. This seems to me the reverse of what we ought to do.
This is not obvious to me. Care to elaborate about your reasoning?
I was thinking I would teach the class first by giving definitions, and not get into actual programming until people know what they're doing.
The problem I see with this is that you would be deferring all the fun, all the action. People don't necessarily need to fully know what they are doing. It might even be easier to understand the details with the time while they see how things work out *when they do it*.
With other words, I don't think that people mainly learn what they are doing by being teached the theories, but by trying things and learning from their errors.
I don't want people typing "public static void main" until they know what public, static, and void all mean.
I can sympathize with that feeling. I fear it has more to do with irrational feelings about what is the right thing to do than with the actual reality of how people learn things, though.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
With other words, I don't think that people mainly learn what they are doing by being teached the theories, but by trying things and learning from their errors.
I'm with you all the way here. Why deny someone all those wonderful "Aha" moments that come with discovery? Those are ones that stick with you.
Mehul Sanghvi
Ranch Hand
Joined: Feb 04, 2002
Posts: 134
posted
0
Hi,
Nice story Ilja!
Though it missed one fact! And that is, Jack though wouldnt be as good a programmer as Jill would be, he will still be better paid for all his life AND keep getting faster promotions!
Mehul.
Ryan McGuire
Ranch Hand
Joined: Feb 18, 2005
Posts: 890
posted
0
First, concerning the Jack and Jill story:
Originally posted by Mehul Sanghvi:
...Jack though wouldnt be as good a programmer as Jill would be...
What makes you think that Jill will be any better than Jack? Sure, Jill has a four year (or wahtever) head start on Jack. But I would bet that Jack would be able to advance faster, and sooner or later catch up and pass Jill.
Once Jack an Jill move out and get their own apartments, who will be better prepared to fix his/her own bike if something breaks? Who will know what kind of tires to buy if he/she want to go mountain biking?
"First" sure as heck doesn't mean "better in the long run." I've been in the position to hire programmer/engineers for our team. For a short term assignment, I'd rather have someone with four years experience and not degree than someone with the BS and no expereience. However, for longer term and higher level positions, I'd sure rather have someone with a BS and eight years of experience than just twelve years of expererience (ceteris paribus).
Second, different people learn better in different ways. Some are Jacks and some are Jills. For instance, I myself am a Jill until I would be considered a good solid beginner. Then I switch over to Jack mode to get an "academic" perspective on things that I might not get through my own experences. So the right way to teach a course will depend on the students as much as finding the one true way.
Perhaps you can balance the two extremes: provide a simple skeleton program that allows the Jills to do some hands-on stuff even before they know what public static void is. But then don't have any mandatory programming assignments until the Jacks have had a chance to learn everything that would go into the program. Of course, this might amount to coming up with two course plans then trying to merge them together.