Approaches to Teaching the Programming Languages Course - PowerPoint PPT Presentation


PPT – Approaches to Teaching the Programming Languages Course PowerPoint presentation | free to download - id: fc2c5-ZDc1Z


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation

Approaches to Teaching the Programming Languages Course


A combination of incongruous things: 'In the minds of many, the real and ... direct, counterexample, contraposition, contradiction; mathematical induction ... – PowerPoint PPT presentation

Number of Views:28
Avg rating:3.0/5.0
Slides: 18
Provided by: csGen
Learn more at:


Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Approaches to Teaching the Programming Languages Course

Approaches to Teaching the Programming Languages
  • A 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//

Panelists (alphabetically)
Elizabeth Adams Harrisonburg Virginia Doug Baldwin Geneseo New York Judith Bishop Pretoria South Africa
John English Brighton England Pamela Lawhead Oxford Mississippi Daniel Stevenson Eau Claire Wisconsin
Computing Curricula 2001 Computer Science
  • http//

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 its 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 theres always a new one to master

Class Languages
  • Everyone in the class learns and writes programs
  • Pascal or Ada
  • Lisp or Scheme
  • Prolog
  • Alice

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,

Useful Links
  • Dictionary of Programming Languages
  • Programming Languages http//
  • 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.

  • 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

Curriculum 2001
  • Additional extracts on following three slides

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

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
  • PF2. Algorithms and problem-solving
    Problem-solving strategies the role of
    algorithms in the problem-solving process the
    concept and properties of algorithms debugging
  • 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
  • SE6. Software validation Testing fundamentals
    test case generation
  • From Computing Curriculum 2001

Computing environments From Computing Curriculum
Concept Description Associated Activities
Programming languages and paradigms 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