1 / 17

Approaches to Teaching the Programming Languages Course

This article explores a variety of approaches to teaching the programming languages course, including an emphasis on formal notations and specifications, historical perspectives, paradigms, and reductionist approaches. It also highlights the importance of learning multiple languages and provides resources for further study.

mhuang
Download Presentation

Approaches to Teaching the Programming Languages Course

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Approaches to Teaching the Programming Languages Course A Potpourri

  2. 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). • 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

  3. Panelists (alphabetically)

  4. Computing Curricula 2001Computer Science http://acm.org/education/curric_vols/cc2001.pdf

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. Class Languages • Everyone in the class • FORTRAN IV • Pascal or Ada • Lisp or Scheme • Prolog • Alice

  11. 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,

  12. 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.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/

  13. And … • Fun course to teach • Biggest problems • Not enough time • Too much to choose from • Biggest hooray • former students’ comments

  14. 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

  15. 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

  16. Computing environments

More Related