Dear Python Community, I joined the Python Edu-Sig about a year ago and posed the question of what would be good for an Introductory High School Programming course. Your input guided my efforts and now my high school is finally going to offer programming courses starting next year; we currently do not offer any programming. We have permission for two classes and administration support for a third class a few years down the road. At the moment the course offerings are looking like this: 1.. The first semester class will probably be Visual Basic. Two reasons for this: 1). The GUI should hold students' attention quickly in this elective class and, 2). Every other high school in my metro area is offering Visual Basic. 2.. The second semester class is looking like it will be Python. Books are hard to find but I'm looking at, "Python Programming for the Absolute Beginner" by Michael Dawson, "Python Programming An Introduction to Computer Science" by John Zelle, and "How to Think Like a Computer Scientist Learning with Python" by Allen Downey, Jeffrey Elkner and Chris Meyers. Maybe I'll settle on one or a combination of the three. 3.. The next full year class will be AP Computer Science Java (This class won't happen for a few years however. I have to become more knowledgeable before I tackle three big fish at once). I have done a lot of research on this but I must confess that since I am not a programmer that most of the research results are over my head. My high school is not turning out programmers; we are just trying to expose students to computer science and programming and to help them think logically through problems. We are trying to prepare them for college computer science. From my research, Python's strengths seem to be: easy to learn, simple syntax, fun, allows students to spend time thinking about the problem versus fixing syntax, transitions nicely into Java, and develops logical thinking. All that sounds great, just what we are tying to accomplish and I can't wait for the course. (I'm finally getting to my question.) Now some people are telling me that we need to offer C++. Help! I don't think I can fit more into the curriculum and do justice to any one language. One of our goals is to offer AP Computer Science Java in the future and we want the students adequately prepared for that language. What is the opinion of the Python Edu-Sig community? Should we offer C++? And if so, where would it fit into the curriculum? Thank you. This community was very helpful in the past in steering me in the right direction. (Another strength of Python). You are helping shape new courses at the high school level. Your help is greatly appreciated. Joe Ehlers
On Thu, Feb 24, 2005 at 08:39:56PM -0600, Joseph Ehlers wrote:
Dear Python Community,
...
My high school is not turning out programmers; we are just trying to expose students to computer science and programming and to help them think logically through problems. We are trying to prepare them for college computer science. From my research, Python's strengths seem to be: easy to learn, simple syntax, fun, allows students to spend time thinking about the problem versus fixing syntax, transitions nicely into Java, and develops logical thinking. All that sounds great, just what we are tying to accomplish and I can't wait for the course.
(I'm finally getting to my question.) Now some people are telling me that we need to offer C++. Help! I don't think I can fit more into the curriculum and do justice to any one language. One of our goals is to offer AP Computer Science Java in the future and we want the students adequately prepared for that language. What is the opinion of the Python Edu-Sig community? Should we offer C++? And if so, where would it fit into the curriculum?
You summed up very well what you are trying to accomplish with your school's computer programming curriculum (teach logical thinking and problem solving, prepare for a transition into Java should the student go on to computer science in college) and you say that Python is meeting that need. So the question is, why are "some people" telling you that you need to offer C++? What need do they think is not being met that C++ can fill? If "they" are telling you that you need to offer C++, then the burden is on "them" to explain why. The only possible reason you give for C++ is to be adequately prepared for Java. So why not just offer Java instead of C++? Java is easier for new programmers. I am a professional software developer with years of experience programming in C++. About four years ago, my company (and every other company I am aware of) that was doing application development in C++ switched over to C# or Java (I did both). I haven't done any C++ development since. Switching from C++ to Java and C# at least doubled my productivity, and when I am allowed to use Python, that at least doubles my productivity over C# or Java. C and C++ are low-level lanaguages that are best left for low-level tasks such as device drivers, directly interfacing with the operating system, or things that require very high performance such as 3D graphics libraries (most programmers just use such libraries, they don't write their own). Sure, it may be educational to teach students C or C++ so they can appreciate the trials that the previous generation had to go through before we had decent high-level languages. Also teaching C or C++ can be helpful as part of a big picture overview that includes understanding the hardware and the operating system. Maybe those goals are what "they" had in mind when they recommended adding C++ to curriculum, but those are not what you said your goals were. Perhaps understanding the history, the hardware, and the OS at that advanced level is more of a college-level goal anyway. David H.
Dear Mr. Ehlers, It was the College Board's decision to switch from Pascal to C++ that lead me to Python in the first place, since I found C++ to be an absolutely awful first language (the College Board eventually agreed, and C++ was soon replaced by Java as the language for the AP exam). Since you say that "My high school is not turning out programmers; we are just trying to expose students to computer science and programming and to help them think logically through problems..." there is no good reason to be using C++ in your curriculum. C/C++ will be part of a college CS program, but it need not and should not be part of a high school one, particularly one with the goals you describe. It would be interesting to find out why those that are telling you that you "need to offer C++" think this is the case. My guess is they are motivated by some idea of the "prevalence of C++ in the market" and are completely ignoring any pedagogical issues involved. I would suggest you reconsider the decision to use VB before Python. Python is a better language for learning programming ideas than VB is, and most high school VB courses I have seen really are just introductions to the Visual Studio environment and have *very* little to do with programming. Alan Gauld has an on-line web tutorial, "Learning to Program" (http://www.freenetpages.co.uk/hp/alan.gauld/) which makes some use of Basic as well as Python. If you have an instructor who is really interested in doing so, I think a parallel approach (looking at solutions to problems in both Python and VB and comparing and contrasting the language features) would be more fruitful than a VB first approach. Hope this helps. On Thu, 2005-02-24 at 20:39 -0600, Joseph Ehlers wrote:
Now some people are telling me that we need to offer C++. Help! I don’t think I can fit more into the curriculum and do justice to any one language. One of our goals is to offer AP Computer Science Java in the future and we want the students adequately prepared for that language. What is the opinion of the Python Edu-Sig community? Should we offer C++? And if so, where would it fit into the curriculum?
Joe Ehlers
-- Jeffrey Elkner <jeff@elkner.net> Open Book Project <http://ibiblio.org/obp>
participants (3)
-
David Handy
-
Jeffrey Elkner
-
Joseph Ehlers