[Edu-sig] Python as a first-year programming language

Toby Donaldson tjd@sfu.ca
Fri, 25 Apr 2003 18:13:50 -0700


This is a multi-part message in MIME format.

------=_NextPart_000_007A_01C30B56.6C494520
Content-Type: text/plain;
	charset="US-ASCII"
Content-Transfer-Encoding: 7bit

Hi all,
 
I've been lurking on this list for a few months now, and thought it was
finally time to say hello.
 
I am interested in Python as a first language for first-year university
students, including students who are not planning to major in computer
science or engineering or some other technical field.
 
As a warm-up for trying to convince colleagues of the merits of Python,
I've written an advocacy paper, which you can read at
http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html (it's a
presentation at WCCCE http://www.cs.ubc.ca/wccce/index.html). There's
probably nothing new in it to people on this list. I found that actually
writing Java equivalents was quite an interesting exercise, and a good
way to really see the differences between Python and Java.
 
One of the problems I have about acceptance of Python is that the choice
of first-year programming language is likely to be a group decision, and
Python, for all its merits, is either unknown, or has a reputation as
being "just a scripting language", or just a new version of BASIC. Such
innuendos unfortunately often carry the day in many academic
departments, as nobody but the teachers of the programming class will
have time to actually evaluate the different languages. Who says
academia has no pointy-haired bosses? :-)
One strategy I have been trying out is to pitch Python as a sort of
practical version of Scheme. Computer scientists love functional
programming, so to tell them that Python has lambda expressions and list
comprehensions is an easy (if underhanded) way to get them to take it
seriously. Plus, I've pointed out to people that Python has some
similarities to the language that Edsgar Dijkstra uses in his classic A
Discipline of Programming.
Also, we are developing a set of exercises and answers for How to Think
Like a Computer Scientist, the on-line Python programming text. I have
become rather disillusioned with the objects-first way of teaching
programming, and really like its straightforward, bottom-up approach.
Plus, the brevity of the text itself is a refreshing change from the
1000 page pulp bombs that constitute most programming textbooks. I've
reviewed a number of Java books recently, and they're splattered with
special boxes and tags to point out programming rules, interesting
facts, etc. The clutter of some of these books is truly remarkable. Good
things students don't read them. :-)
Toby
--
Dr. Toby Donaldson, Assistant Professor
tjd@sfu.ca,
<file:///D:\Documents%20and%20Settings\donaldson\Application%20Data\Micr
osoft\Signatures\www.sfu.ca> www.sfu.ca
Simon Fraser University
2400 Surrey Place,10153 King George Hwy
Surrey, BC V3T 2W1, Phone: 604.268 7433, Fax: 604.586 5237
 

------=_NextPart_000_007A_01C30B56.6C494520
Content-Type: text/html;
	charset="US-ASCII"
Content-Transfer-Encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" =
xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:st1=3D"urn:schemas-microsoft-com:office:smarttags" =
xmlns=3D"http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">


<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 10">
<meta name=3DOriginator content=3D"Microsoft Word 10">
<link rel=3DFile-List href=3D"cid:filelist.xml@01C30B55.E1E89E30">
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"Street"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PostalCode"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"State"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"City"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PlaceName"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"PersonName"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"address"/>
<o:SmartTagType =
namespaceuri=3D"urn:schemas-microsoft-com:office:smarttags"
 name=3D"place"/>
<!--[if gte mso 9]><xml>
 <o:OfficeDocumentSettings>
  <o:DoNotRelyOnCSS/>
 </o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:SpellingState>Clean</w:SpellingState>
  <w:GrammarState>Clean</w:GrammarState>
  <w:DocumentKind>DocumentEmail</w:DocumentKind>
  <w:EnvelopeVis/>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]--><!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:Wingdings;
	panose-1:5 0 0 0 0 0 0 0 0 0;
	mso-font-charset:2;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:0 268435456 0 0 -2147483648 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
a:link, span.MsoHyperlink
	{color:blue;
	text-decoration:underline;
	text-underline:single;}
a:visited, span.MsoHyperlinkFollowed
	{color:purple;
	text-decoration:underline;
	text-underline:single;}
p
	{mso-margin-top-alt:auto;
	margin-right:0cm;
	mso-margin-bottom-alt:auto;
	margin-left:0cm;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";}
span.EmailStyle17
	{mso-style-type:personal-compose;
	mso-style-noshow:yes;
	mso-ansi-font-size:10.0pt;
	mso-bidi-font-size:10.0pt;
	font-family:Arial;
	mso-ascii-font-family:Arial;
	mso-hansi-font-family:Arial;
	mso-bidi-font-family:Arial;
	color:windowtext;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;
	mso-header-margin:35.4pt;
	mso-footer-margin:35.4pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 10]>
<style>
 /* Style Definitions */=20
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";}
</style>
<![endif]-->
</head>

<body lang=3DEN-US link=3Dblue vlink=3Dpurple =
style=3D'tab-interval:36.0pt'>

<div class=3DSection1>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>Hi all,<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>I&#8217;ve been lurking on this list for a few months =
now,
and thought it was finally time to say =
hello.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>I am interested in Python as a first language for =
first-year
university students, including students who are not planning to major in
computer science or engineering or some other technical =
field.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>As a warm-up for trying to convince colleagues of the =
merits
of Python, I&#8217;ve written an advocacy paper, which you can read at =
<a
href=3D"http://www.cs.ubc.ca/wccce/Program03/papers/Toby.html">http://www=
.cs.ubc.ca/wccce/Program03/papers/Toby.html</a>
(it&#8217;s a presentation at WCCCE <a
href=3D"http://www.cs.ubc.ca/wccce/index.html">http://www.cs.ubc.ca/wccce=
/index.html</a>).
There&#8217;s probably nothing new in it to people on this list. I found =
that actually
writing Java equivalents was quite an interesting exercise, and a good =
way to
really see the differences between Python and =
Java.<o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=3DMsoNormal><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;
font-family:Arial'>One of the problems I have about acceptance of Python =
is
that the choice of first-year programming language is likely to be a =
group
decision, and Python, for all its merits, is either unknown, or has a
reputation as being &#8220;just a scripting language&#8221;, or just a =
new
version of BASIC. Such innuendos unfortunately often carry the day in =
many
academic departments, as nobody but the teachers of the programming =
class will
have time to actually evaluate the different languages. Who says =
academia has
no pointy-haired bosses? </span></font><font size=3D2 =
face=3DWingdings><span
style=3D'font-size:10.0pt;font-family:Wingdings;mso-ascii-font-family:Ari=
al;
mso-hansi-font-family:Arial;mso-bidi-font-family:Arial;mso-char-type:symb=
ol;
mso-symbol-font-family:Wingdings'><span =
style=3D'mso-char-type:symbol;mso-symbol-font-family:
Wingdings'>J</span></span></font><font size=3D2 face=3DArial><span
style=3D'font-size:10.0pt;font-family:Arial'><o:p></o:p></span></font></p=
>

<p><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;font-family:Arial;
mso-no-proof:yes'>One strategy I have been trying out is to pitch Python =
as a
sort of practical version of Scheme. Computer scientists love functional
programming, so to tell them that Python has lambda expressions and list
comprehensions is an easy (if underhanded) way to get them to take it
seriously. Plus, I&#8217;ve pointed out to people that Python has some
similarities to the language that Edsgar Dijkstra uses in his classic A
Discipline of Programming.<o:p></o:p></span></font></p>

<p><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;font-family:Arial;
mso-no-proof:yes'>Also, we are developing a set of exercises and answers =
for
How to Think Like a Computer Scientist, the on-line Python programming =
text. I
have become rather disillusioned with the objects-first way of teaching =
programming,
and really like its straightforward, bottom-up approach. Plus, the =
brevity of
the text itself is a refreshing change from the 1000 page pulp bombs =
that
constitute most programming textbooks. I&#8217;ve reviewed a number of =
Java
books recently, and they&#8217;re splattered with special boxes and tags =
to point
out programming rules, interesting facts, etc. The clutter of some of =
these
books is truly remarkable. Good things students don&#8217;t read them. =
</span></font><font
size=3D2 face=3DWingdings><span =
style=3D'font-size:10.0pt;font-family:Wingdings;
mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-bidi-font-fam=
ily:
Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings;mso-no-proof:=
yes'><span
style=3D'mso-char-type:symbol;mso-symbol-font-family:Wingdings'>J</span><=
/span></font><font
size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;font-family:Arial;mso-no-proof:
yes'><o:p></o:p></span></font></p>

<p><font size=3D2 face=3DArial><span =
style=3D'font-size:10.0pt;font-family:Arial;
mso-no-proof:yes'>Toby<br>
--<br>
</span></font><font size=3D2><span =
style=3D'font-size:10.0pt;mso-no-proof:yes'>Dr. =
</span></font><st1:PersonName><font
 size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'>Toby =
Donaldson</span></font></st1:PersonName><font
size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'>, Assistant =
Professor<br>
</span></font><st1:PersonName><font size=3D2><span =
style=3D'font-size:10.0pt;
 mso-no-proof:yes'>tjd@sfu.ca</span></font></st1:PersonName><font =
size=3D2><span
style=3D'font-size:10.0pt;mso-no-proof:yes'>, </span></font><span
style=3D'mso-no-proof:yes'><a
href=3D"file:///D:\Documents%20and%20Settings\donaldson\Application%20Dat=
a\Microsoft\Signatures\www.sfu.ca"><font
size=3D2><span =
style=3D'font-size:10.0pt'>www.sfu.ca</span></font></a></span><font
size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'><br>
</span></font><st1:place><st1:PlaceName><font size=3D2><span =
style=3D'font-size:
  10.0pt;mso-no-proof:yes'>Simon</span></font></st1:PlaceName><font =
size=3D2><span
 style=3D'font-size:10.0pt;mso-no-proof:yes'> =
</span></font><st1:PlaceName><font
  size=3D2><span =
style=3D'font-size:10.0pt;mso-no-proof:yes'>Fraser</span></font></st1:Pla=
ceName><font
 size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'> =
</span></font><st1:PlaceName><font
  size=3D2><span =
style=3D'font-size:10.0pt;mso-no-proof:yes'>University</span></font></st1=
:PlaceName></st1:place><font
size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'><br>
</span></font><st1:Street><st1:address><font size=3D2><span =
style=3D'font-size:
  10.0pt;mso-no-proof:yes'>2400 Surrey =
Place</span></font></st1:address></st1:Street><font
size=3D2><span =
style=3D'font-size:10.0pt;mso-no-proof:yes'>,</span></font><st1:Street><s=
t1:address><font
  size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'>10153 King =
George Hwy</span></font></st1:address></st1:Street><font
size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'><br>
</span></font><st1:place><st1:City><font size=3D2><span =
style=3D'font-size:10.0pt;
  mso-no-proof:yes'>Surrey</span></font></st1:City><font size=3D2><span
 style=3D'font-size:10.0pt;mso-no-proof:yes'>, =
</span></font><st1:State><font
  size=3D2><span =
style=3D'font-size:10.0pt;mso-no-proof:yes'>BC</span></font></st1:State><=
font
 size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'> =
</span></font><st1:PostalCode><font
  size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'>V3T =
2W1</span></font></st1:PostalCode></st1:place><font
size=3D2><span style=3D'font-size:10.0pt;mso-no-proof:yes'>, Phone: =
604.268 7433,
Fax: 604.586 5237</span></font><font size=3D2 face=3DArial><span =
style=3D'font-size:
10.0pt;font-family:Arial;mso-no-proof:yes'><o:p></o:p></span></font></p>

<p class=3DMsoNormal><font size=3D3 face=3D"Times New Roman"><span =
style=3D'font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>

------=_NextPart_000_007A_01C30B56.6C494520--