How to evaluate programming skills, are there any international benchmarks?
Hello everybody, I have been going through the edu-sig archive for a couple of months now; there is really a lot to read and learn in there. I work at the Department of Computer Science at Åbo Akademi University in Turku, Finland. For the last two years I have been active in a project, whose aim is to acquaint high school students with computer science, since no true computer science education is available to them otherwise. While working with these high school students I have realized how important it would be for them to get a true and correct conception of what computer science is all about. I think the idea of CP4E, proposed by Guido van Rossum, is very good. I believe that everybody (not only future computer scientist) would gain from knowing how to program, due to the meta skills learned in the process. When one learns to program one also acquires knowledge in how to solve problems, think logically, methodically and algorithmically. I think the basic education in computer science has not been given enough attention; in my opinion the basic computer science courses should have high priority, since they act as starting points into the field. I feel that programming should be taught in high schools, since these should provide all-round learning and ensure that the students receive the skills and knowledge needed for further study and in life in general. The reason I am telling you all this is to set some kind of background to what I want to ask you about. I am about to engage myself in research as a PhD-student, focusing on how programming and algorithmic thinking can be taught to high school students. I have been very fascinated by Python, and have decided to use that as the first thing to try out in order to get some results on how high school students should (or shouldn't :) be taught. I will start by developing a course in Python that I will give to newbies in high schools. I have not had any problem in finding material for the course, but what I do see as a problem is how I should go about evaluating the course. Since I am aiming at a PhD, I would, naturally, like to be able to extract some information about whether the course promoted the problem solving, programming and algorithmic thinking skills of the students. Since there are a lot of different persons on this mailing list, I thought it would be a good idea to write down my ponderings here. * Have anybody else done anything like what I am about to do? I would really like to hear about your experiences. * Are there any international benchmarks one can use to measure the results of this kind of an "experiment"? What should be measured and how? * What kind of research methods can and should be used? * The course will contain about 28-30 hours; I have a feeling that we will be able to cover much more programming theory using Python than, for instance, Java, but does anybody have an idea about how far we could get in that time? I am very enthusiastic about this project and I am really looking forward to giving the course. I am grateful for any answers, thoughts and advice you can give me. Best regards, Linda Grandell Åbo Akademi University Turku, Finland
On Thu, 10 Jun 2004, Linda Grandell wrote:
Hello everybody,
I have been going through the edu-sig archive for a couple of months now; there is really a lot to read and learn in there.
I work at the Department of Computer Science at Åbo Akademi University in Turku, Finland. For the last two years I have been active in a project, whose aim is to acquaint high school students with computer science, since no true computer science education is available to them otherwise. While working with these high school students I have realized how important it would be for them to get a true and correct conception of what computer science is all about. I think the idea of CP4E, proposed by Guido van Rossum, is very good. I believe that everybody (not only future computer scientist) would gain from knowing how to program, due to the meta skills learned in the process. When one learns to program one also acquires knowledge in how to solve problems, think logically, methodically and algorithmically.
I think the basic education in computer science has not been given enough attention; in my opinion the basic computer science courses should have high priority, since they act as starting points into the field. I feel that programming should be taught in high schools, since these should provide all-round learning and ensure that the students receive the skills and knowledge needed for further study and in life in general.
The reason I am telling you all this is to set some kind of background to what I want to ask you about. I am about to engage myself in research as a PhD-student, focusing on how programming and algorithmic thinking can be taught to high school students. I have been very fascinated by Python, and have decided to use that as the first thing to try out in order to get some results on how high school students should (or shouldn't :) be taught.
I will start by developing a course in Python that I will give to newbies in high schools. I have not had any problem in finding material for the course, but what I do see as a problem is how I should go about evaluating the course. Since I am aiming at a PhD, I would, naturally, like to be able to extract some information about whether the course promoted the problem solving, programming and algorithmic thinking skills of the students. Since there are a lot of different persons on this mailing list, I thought it would be a good idea to write down my ponderings here.
* Have anybody else done anything like what I am about to do? I would really like to hear about your experiences.
* Are there any international benchmarks one can use to measure the results of this kind of an "experiment"? What should be measured and how?
Hi Linda, Good luck with your research. I teach Python, and I teach high school students, but I haven't taught Python to high school students. I think it would be the best combo. I teach students that the point of programming language is to communicate with other engineers in a language that also the computer understands. When I evaluate their programs, whether or not the program runs is almost irrelevant. That the code is easy to read, well-structured, well-chosen identifier names, ... is everything. I grade their programs as if I was grading poetry or art. If there is pleasure in reading a program, it is a good program. If it is frustrating to read, it's bad code. Also, I give a really low score for students who do not follow the specification exactly. While I encourage experimentation in general, when they are submitting a program for a grade, I insist that they make every effort to have nothing extra in it, and that the code follows the specification exactly. These are important for production code at work. My students seem to like me anyway. :^)
* What kind of research methods can and should be used?
* The course will contain about 28-30 hours; I have a feeling that we
30 hours goes by in a snap for students who are programming in Python.
will be able to cover much more programming theory using Python than, for instance, Java, but does anybody have an idea about how far we could get in that time?
I am very enthusiastic about this project and I am really looking forward to giving the course. I am grateful for any answers, thoughts and advice you can give me.
Best regards,
Good luck!!! Marilyn Davis
Linda Grandell Åbo Akademi University Turku, Finland
_______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig
--
So I just finished a chapter in collaboration with Jerritt Collord, a gifted young man from Nevada with Linuxfund.org, who graciously contributed his time to the Saturday Academy (whereas I charged a fee -- but Linuxfund reimbursed him), to work out 'Adventures in Open Source' a first time offering. Saturday Academy is a nonprofit working with high school aged and younger students looking for experiences that take them outside the usual classroom fare, giving them exposure to working engineers, artists, scientists, musicians or whatever flies (and passes quality control). I consider it a privilege to work with this outfit, spearheaded by Joyce et al out of Portland State University. A challenge this particular time was Satacad had been working with police in the Hillsboro area to fulfill the chief of police guy's mission to bridge the digital divide -- something he's passionate about, and will bend the rules to do. To this end, these police had setup a RedHat 9.0 lab right off the main lobby of their West Precinct. That was to be the site of our class. You could tell even the parents wondered about this venue, as they left their teenagers (all boys this time) in our care. Like I said, this was a pilot course, a first time offering, there was lots to be worked out. But one thing we all agreed on: open source begins with source code being a focus, and the ability to read and write source code, i.e. to engage with the principle currency of the realm, was important for entre. It'd feel too watered down if we didn't get into some serious programming (not just HTML or something). And we selected Python for this job (I was sold on this idea from the beginning, and Jerritt had no problem with it, although he is a fan of Squeak and Alan Kay's level of commitment (not implying I'm not an admirer of Squeak -- I am, especially of what it does in the hands of skilled Squeakers). The course provided me with a good opportunity to field test a lot of my ideas about mixing Python with geometry (simple, static stuff to start -- didn't even get VPython to compile in time; these Red Hat 9.0 boxes started in a fairly primitive state, no gcc even, to compile Python with, and no CDs; we did it all over the internet (with Jerritt setting that part up, with help and support from Phil et al of the HBPD)). Course materials: we're working on synthesizes our work and have more literature developed than is currently online. However, at my web site is a snapshot with quite a bit of our materials. Regarding Python, I'd be especially interested in feedback on my paper under the Background subdirectory (the PDF). I wrote it partly in response to Ryan's request for more theory. I also just fixed a typo (added a 'd', changed version from 1.1 to 1.2). The kids were very engaged and learned a lot. The course was considered a success and we're planning to offer it again in the fall, although Jerritt is moving out of town shortly, so the chemistry and configuration will be different. This was a really good episode. Kirby Website: http://www.4dsolutions.net/satacad/ PS: I also offered to teach a math-through-programming course starting Jan 2005 (some different, some partially overlapping content), still using Python, but also'd plan to phase in some J.
i.e. to engage with the principle currency of the realm, was important for ^^^^^^^^^ principal
Note: some of the resources we used included that youth-made mpeg about Python out of Yorktown High, by Jeff's students. I think that impressed 'em in part because Eric Raymond had already appeared as an authority in another documentary we pilot tested, so his coming out so positively about Python carried cred. And the human interest subplot was just dorky enough to keep their attention. I also pointed them to 'How to Think Like a Computer Scientist' and to the edu-sig page in general, as a good place to follow up (one of the students had ordered 'Learning Python' from Amazon, which I of course likewise endorsed). I'm cycling from Seattle to Portland over the next two days (through the weekend) and so there'll be a lag before I post any more to this list (not that we've not just had quite long silence). I'd like to discuss my upcoming OSCON presentation as well, if anyone is in the mood. I could likely improve my presentation as a result of such discussion. The PowerPoint I'll be using is at http://www.4dsolutions.net/oscon2004 (both ppt and pdf available). I cover a few topics we talked about here, including our work with NKS cellular automata via Tk, using Dr. Zelle's graphics.py. Kirby
Regarding Python, I'd be > especially interested in feedback on my paper under the Background subdirectory (the PDF).
Good stuff. I would only suggest you try to squeeze in something about the phenom one is observing when playing as follows.
class Mammal(object): def eat(self): print 'Munch' def sleep(self): print 'Zzzzzz'
hippo =Mammal() hippo.eat() Munch print hippo.eat <bound method Mammal.eat of <__main__.Mammal object at 0x00A8E490>> eat=hippo.eat() Munch print eat None
Art
Good stuff.
I would only suggest you try to squeeze in something about the phenom one is observing when playing as follows.
class Mammal(object): def eat(self): print 'Munch' def sleep(self): print 'Zzzzzz'
hippo =Mammal() hippo.eat() Munch print hippo.eat <bound method Mammal.eat of <__main__.Mammal object at 0x00A8E490>> eat=hippo.eat() Munch print eat None
Indeed, I should include something along those lines. You're pointing out the difference between printing a result and returning one. Hippo.eat() prints to stdout (the terminal) but doesn't return anything, so the variable set up to receive its output gets the default return value for methods and functions (None) -- which is different than not being defined at all. My thanks to both yourself and David Handy for useful feedback. Appreciated. Kirby
I'd like to know if anyone else subscribed to this list is attending OSCON in Portland these days, or has plans to show up shortly (it's just tutorial sessions these first couple of days -- I'm going through a 2-parter on wxPython tomorrow (Robin Dunn), caught the last half of one on Plone this AM (Joel Burton), did Subversion this afternoon (a CVS replacement...)). I visited the bookstore in the basement, bought Andy McKay's new book on Plone (which I hope he'll sign for me when he shows up later) -- but John Zelle's book wasn't in inventory (I specifically asked about it, as well as searching the stacks). I plan to plug it in my talk on Thursday, but I guess would-be buyers will need to find it on Amazon. Of course Guido will be here. I hope we have a chance to talk at least briefly. I'd have more chance to meet with Python folks were I attending VanPy, a Python conference in Vancouver, BC (Canada) immediately following OSCON. Unfortunately, I committed to doing a talk on Python for high school computer teachers during that time (on Aug 2) -- and then the talk was canceled, because all but one of the teachers signed up for 100% Java workshops (they'd never heard of Python, after all). They still haven't updated the website to reflect this cancellation: http://www.sao.org/programs/superquest.asp (search on Python). The Vancouver thing was already full by then, and I'd made no real plans, so I think I'll need to let that one get away. Ooo, I see Python 2.4 alpha is out. Kirby
And we selected Python for this job (I was sold on this idea from the beginning, and Jerritt had no problem with it, although he is a fan of Squeak and Alan Kay's level of commitment (not implying I'm not an admirer of Squeak -- I am, especially of what it does in the hands of skilled Squeakers).
Particularly in the context of "Adventures in Open Source", I think you made the appropriate choice. At the moment, I believe the Squeak license precludes it from meeting criteria of distributions such as Debian. But let's consider that a technicality. In spirit, Squeak - to me - is outside the mainstream of Open Source. It seems to have evolved as a world until itself. Python, as glue, draws its strength from its ability to help folks leverage other open source efforts. Cooperative and inter-operative technology is - to me - at the essence of the Open Source concept. Python had evolved into an important factor, and Guido, in the award handed to him, I think, by Raymond, was appropriately sited for his contribution to it. Squeak is way off to the side, IMO, in the context of Open Source and its significance. Art
Particularly in the context of "Adventures in Open Source", I think you made the appropriate choice.
Yes, I tend to agree. In open source world, Python is very mainstream. Squeak my have some appealing attributes, but it's not so well accommodated to the existing open source culture.
Squeak is way off to the side, IMO, in the context of Open Source and its significance.
Art
Yes. Kirby
On Fri, 16 Jul 2004, Kirby Urner wrote:
Saturday Academy is a nonprofit working with high school aged and younger students looking for experiences that take them outside the usual classroom fare, giving them exposure to working engineers, artists, scientists, musicians or whatever flies (and passes quality control). I consider it a privilege to work with this outfit, spearheaded by Joyce et al out of Portland State University.
I grew up in the Portland area. I am a Saturday Academy "alumni" from the 1980's. It's a great program.
Regarding Python, I'd be especially interested in feedback on my paper under the Background subdirectory (the PDF). I wrote it partly in response to Ryan's request for more theory. I also just fixed a typo (added a 'd', changed version from 1.1 to 1.2).
Since operations in Python are normally accessed via built-in operators versus explicit method calls, and since you don't normally subclass int or float, I would not have led off my discussion of types and objects by using int and float as examples. Those types are more the exception than the rule, as far as how you use them. I think leading off with the Mammal class, hippo instance would have been more clear, and then afterwards say, "oh by the way, *everything* is an object, even int. Look at this:
(3).__add__(4) 7
See, you can even call methods on 3."
The kids were very engaged and learned a lot. The course was considered a success and we're planning to offer it again in the fall, although Jerritt is moving out of town shortly, so the chemistry and configuration will be different. This was a really good episode.
Kirby
Website: http://www.4dsolutions.net/satacad/
Good stuff. I liked the scissors-paper-rock object lesson on why you want access to the source! With the youth I am teaching, I'm trying to use extending (and possibly "cheating") on a multi-player game as motivation. He/she who can code gets the advantage, knows the hidden commands that refuels your ship, etc. David H.
Since operations in Python are normally accessed via built-in operators versus explicit method calls, and since you don't normally subclass int or float, I would not have led off my discussion of types and objects by using int and float as examples. Those types are more the exception than the rule, as far as how you use them.
My thinking was colored by the parallel mathematics curriculum, wherein we start with natural numbers, then progress through integers, rationals, reals and complex. At each stage, a new type of number is introduced to address limitations of the earlier types. I'm thinking a good way to talk about types with kids is to go over this experience of gradually extending the number types in grade school, then talking about how "just numbers" is insufficient -- we need a date/time type, a string type, and so on. Note: When I developed a mod 7 int-like class, I didn't start by subclassing int, only by overloading some operators. My feeling is in subclassing int, I'm committed to overloading *all* the operators to make them consistent with mod 7 -- too big a commitment.
I think leading off with the Mammal class, hippo instance would have been more clear, and then afterwards say, "oh by the way, *everything* is an object, even int. Look at this:
(3).__add__(4) 7
See, you can even call methods on 3."
That's good notation. I'd always put a space after the 3, as in 3 .__add__, but the paren style is better.
Good stuff. I liked the scissors-paper-rock object lesson on why you want access to the source! With the youth I am teaching, I'm trying to use extending (and possibly "cheating") on a multi-player game as motivation. He/she who can code gets the advantage, knows the hidden commands that refuels your ship, etc.
David H.
Or that elects your president? :-D Kirby
participants (6)
-
Arthur -
David Handy -
Kirby Urner -
Kirby Urner -
Linda Grandell -
Marilyn Davis