Approaches V3

Download Report

Transcript Approaches V3

Approaches to Teaching the
Programming Languages Course
A Potpourri
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
Panelists (alphabetically)
Elizabeth Adams
Doug Baldwin
Judith Bishop
Harrisonburg
Virginia
Geneseo
New York
Pretoria
South Africa
John English
Pamela Lawhead
Daniel Stevenson
Brighton
England
Oxford
Mississippi
Eau Claire
Wisconsin
Computing Curricula 2001
Computer Science
http://acm.org/education/curric_vols/cc2001.p
df
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
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
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
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
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 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
Class Languages
• Everyone in the class
–
–
–
–
–
FORTRAN IV
Pascal or Ada
Lisp or Scheme
Prolog
Alice
Project Languages
• BURKS
• Web
• 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,
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/
And …
• Fun course to teach
• Biggest problems
– Not enough time
– Too much to choose from
• Biggest hooray
– former students’ comments
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
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
Computing environments
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