|
|
|
|
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). |
|
A miscellaneous anthology or collection: a
potpourri of short stories and humorous verse. |
|
A mixture of dried flower petals and spices used
to scent the air.
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 |
|
|
|
|
|
|
|
|
|
http://acm.org/education/curric_vols/cc2001.pdf |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
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 |
|
|
|
|
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 |
|
|
|
|
|
|
CS340. Compiler Construction |
|
CS341. Programming Language Design |
|
CS342. Programming Language Semantics |
|
CS343. Programming Paradigms |
|
CS344. Functional Programming |
|
CS345. Logic Programming |
|
CS346. Scripting Language |
|
|
|
|
|
“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 |
|
|
|
|
|
Everyone in the class |
|
FORTRAN IV |
|
Pascal or Ada |
|
Lisp or Scheme |
|
Prolog |
|
Alice |
|
|
|
|
|
|
|
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, |
|
|
|
|
|
|
Dictionary of Programming Languages http://cgibin.erols.com/ziring/cgi-bin/cep/cep.pl |
|
Programming Languages http://www.cs.waikato.ac.nz/~marku/languages.html |
|
“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/Languages/ |
|
|
|
|
|
|
|
Fun course to teach |
|
Biggest problems |
|
Not enough time |
|
Too much to choose from |
|
Biggest hooray |
|
former
students’ comments |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
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 |
|
|
|
|