Approaches to Teaching the Programming Languages Course

Download Report

Transcript Approaches to Teaching the Programming Languages Course

Approaches to Teaching the
Programming Languages
Course
A Potpourri
ITiCSE 2006 - Elizabeth Adams
Potpourri
A combination of incongruous things: “In the minds of many, the
real and imagined causes for Russia's defeats quickly mingled into a
potpourri of terrible fears” (W. Bruce Lincoln).
2.
A miscellaneous anthology or collection: a potpourri of short stories
and humorous verse.
3.
A mixture of dried flower petals and spices used to scent the air.
1.
AND
[French pot pourri(translation of Spanish olla podrida) : pot, pot; see
potiche + pourri, past participle of pourrir, to rot (from Old French
purir, from Vulgar Latin *putr re, from Latin putr scere. See
putrid).]
http://dictionary.reference.com/browse/potpourri
ITiCSE 2006 - Elizabeth Adams
Panelists (alphabetically)
Elizabeth
Adams
Doug Baldwin
Judith Bishop
Geneseo
New York
Pretoria
South Africa
John English
Pamela Lawhead
Daniel Stevenson
Brighton
England
Oxford
Mississippi
Eau Claire
Wisconsin
Harrisonburg
Virginia
ITiCSE 2006 - Elizabeth Adams
Computing Curricula 2001
Computer Science
http://acm.org/education/curric_vols/cc2001.pdf
ITiCSE 2006 - Elizabeth Adams
Why this panel?
 Important course
– Somewhat slighted in Computing Curricula
2001
– Variety of approaches to teaching it
• Emphasis on formal notations and specifications
• Affected by object oriented beginnings
• Focus on historical perspective
– Paradigms
– Features
• Reductionist approach
ITiCSE 2006 - Elizabeth Adams
PL. Programming Languages (21 core hours)
 PL1. Overview of programming languages (2)
 PL2. Virtual machines (1)
 PL3. Introduction to language translation (2)
 PL4. Declarations and types (3)
 PL5. Abstraction mechanisms (3)
 PL6. Object-oriented programming (10)
 PL7. Functional programming
 PL8. Language translation systems
 PL9. Type systems
 PL10. Programming language semantics
 PL11. Programming language design
From Computing Curriculum 2001
ITiCSE 2006 - Elizabeth Adams
Programming Languages (PL)











PL1. Overview of programming languages [core]
PL2. Virtual machines [core]
PL3. Introduction to language translation [core]
PL4. Declarations and types [core]
PL5. Abstraction mechanisms [core]
PL6. Object-oriented programming [core]
PL7. Functional programming [elective]
PL8. Language translation systems [elective]
PL9. Type systems [elective]
PL10. Programming language semantics [elective]
PL11. Programming language design [elective]
From Computing Curriculum 2001
ITiCSE 2006 - Elizabeth Adams
Figure 9-1. Advanced courses by area
 CS340. Compiler Construction
 CS341. Programming Language Design
 CS342. Programming Language Semantics
 CS343. Programming Paradigms
 CS344. Functional Programming
 CS345. Logic Programming
 CS346. Scripting Language
From Computing Curriculum 2001
ITiCSE 2006 - Elizabeth Adams
Why it’s important
 “Languages shape the way you think”
– Familiarity with a variety of languages makes it
possible to select the best one for solving a particular
problem
 Languages have common elements
– Such as data structures, control structures,
subprograms, parameter passing modes, and identifying
these elements is worthwhile
 Learning many languages makes it easier to learn
new ones
– And there’s always a new one to master
ITiCSE 2006 - Elizabeth Adams
Class Languages
 Everyone in the class learns and writes
programs in:
–
–
–
–
–
FORTRAN IV
Pascal or Ada
Lisp or Scheme
Prolog
Alice
ITiCSE 2006 - Elizabeth Adams
Project Languages
 Each student learns another language and makes a
presentation to the class about it
 BURKS – excellent resource for compilers
 Web – provides free compilers and tutorials
 Some selected languages:
– ABC, Algol, APL,AWK, Beta, C, Eiffel, Euphoria,
Haskell, Icon, ML, Modula2, Oberon, Perl, PHP, PL/I,
Python, Rebol, REXX, Ruby, SETL,Smalltalk,
Snobol4, Titanium,
ITiCSE 2006 - Elizabeth Adams
Useful Links
 Dictionary of Programming Languages
http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl
 Programming Languages
http://www.cs.waikato.ac.nz/~marku/languages.ht
ml
 “The Open Directory Project is the largest, most
comprehensive human-edited directory of the
Web. It is constructed and maintained by a vast,
global community of volunteer editors. “
http://www.dmoz.org/Computers/Programming/La
nguages/
ITiCSE 2006 - Elizabeth Adams
And …
 Fun course to teach
 Biggest problems
– Not enough time
– Too much material to choose from
 Greatest satisfaction
– former students’ comments about how useful
the course turned out to be
ITiCSE 2006 - Elizabeth Adams
Curriculum 2001
 Additional extracts on following three slides
ITiCSE 2006 - Elizabeth Adams
Figure 7-2. Units covered by all six of
the introductory tracks
 Units for which all topics must be covered:
–
–
–
–
–
–
DS1. Functions, relations, and sets
DS2. Basic logic
DS4. Basics of counting
DS6. Discrete probability
PF1. Fundamental programming constructs
PF4. Recursion
–
–
–
–
PL1. Overview of programming languages
PL4. Declarations and types
PL2. Virtual machines
PL5. Abstraction mechanisms
– SP1. History of computing
• From Computing Curriculum 2001
ITiCSE 2006 - Elizabeth Adams
Units for which only a subset of the topics must
be covered:






DS3. Proof techniques: The structure of formal proofs; proof techniques: direct, counterexample, contraposition,
contradiction; mathematical induction
PF2. Algorithms and problem-solving: Problem-solving strategies; the role of algorithms in the problem-solving
process; the concept and properties of algorithms; debugging strategies
PF3. Fundamental data structures: Primitive types; arrays; records; strings and string processing; data representation
in memory; static, stack, and heap allocation; runtime storage management; pointers and references; linked structures
AL1. Basic algorithmic analysis: Big O notation; standard complexity classes; empirical measurements of
performance; time and space tradeoffs in algorithms
AL3. Fundamental computing algorithms: Simple numerical algorithms; sequential and binary search algorithms;
quadratic and O(N log N) sorting algorithms; hashing; binary search trees
AR1. Digital logic and digital systems: Logic gates; logic expressions
 PL6. Object-oriented programming: Object-oriented design;
encapsulation and informationhiding; separation of behavior and
implementation; classes, subclasses, and inheritance;
polymorphism; class hierarchies





SE1. Software design: Fundamental design concepts and principles; object-oriented analysis and design; design for
reuse
SE2. Using APIs: API programming; class browsers and related tools; programming by example; debugging in the
API environment
SE3. Software tools and environments: Programming environments; testing tools
SE5. Software requirements and specifications: Importance of specification in the software process
SE6. Software validation: Testing fundamentals; test case generation
–
From Computing Curriculum 2001
ITiCSE 2006 - Elizabeth Adams
Computing environments
From Computing Curriculum 2001
Concept
Programming
languages and
paradigms
Description
Associated
Activities
Role of
programming
languages; the
translation process;
the existence of
multiple
programming
paradigms
Outline the
program translation
process;
identify at least two
programming
paradigms and
describe their
differences
ITiCSE 2006 - Elizabeth Adams