03-60-440 Principles of Programming Languages (2010 Fall)

School of Computer Science, University of Windsor

 

Office hours in the last week: Tuesday(dec 7): 1-2:30, Thursday 1-2:30, Friday 1-2:30, Monday 2-3:30

Final exam: Tuesday Dec 14, 3:30 OB B04.

  • Lecture time and place: Tuesdays and Thursdays 13:00--14:20 CS 263
  • Office hours: Tuesday and Thursday 11:00-12:00.
  • Instructor: Jianguo Lu, LT 5111. Email: jlu at uwindsor.
  • GA: Amirali Jafarian, email: jafaria at u win. Office hours: 9:00-10:30 Thursday, ER 3152.



    Marks for midterm and assignment 2 are available now

    To get your marks, please enter your student ID:

    Handouts

    1. (week 1) Course outline [MS Word format],  overview (ppt slides).
    2. (Week 2) introduction to programming language classification, paradigms, and history ( classification slides, history slides )
    3. (Week 3, 4) Functional Programming [ Scheme] [ Lambda calculus], Sample scheme programs,
    4. (Week 4) MapReduce,
    5. (week 5) XSLT Slides
    6. (week 6) Logic Programming [Slides], sample.pl, path.pl, snowy.pl
    7. (Week 7, 9) OOP and Polymorphism, Distributed object and object persistence.
    8. (Week 8) Review ( slides ) and midterm
    9. (Week 10, 11) Aspect Oriented Programming, Slides [AOP 1] [AOP2]
    10. (Week 12, 13) Axiomatic semantics.
    11. (Week 13 ) review, ppt , Online test ,
    12. Sample exam questions [Midterm 2006 Winter] [Final sample exam]

    Assignments

    1. [Functional programming]
    2. [ XSLT]
    3. [AspectJ]

      Sample code

      1. overloading/A.java, overloading/OverloadingIncorrect.java,
      2. overriding/A.java, overriding/B.java
      3. inheritance/A.java, inheritance/B.java, inheritance/C.java
      4. inheritance/incorrect/A.java, inheritance/incorrect/B.java, inheritance/incorrect/C.java
      5. inclusionPolymorphism/noPolymorphism/Cat.java ,  inclusionPolymorphism/noPolymorphism/Dog.java, inclusionPolymorphism/noPolymorphism/Interrogator.java,
      6. inclusionPolymorphism/withPolymorphism/Cat.java, inclusionPolymorphism/withPolymorphism/Dog.java, inclusionPolymorphism/withPolymorphism/Mammal.java, inclusionPolymorphism/withPolymorphism/Interrogator.java,
      7. inclusionPolymorphism/morePolymorphism/Cat.java,   inclusionPolymorphism/morePolymorphism/Dog.java inclusionPolymorphism/morePolymorphism/Mammal.java, inclusionPolymorphism/morePolymorphism/Clock.java, inclusionPolymorphism/morePolymorphism/AlarmClock.java, inclusionPolymorphism/morePolymorphism/Talkative.java, inclusionPolymorphism/morePolymorphism/Interrogator.java
      8. generics/SubtypeIterateDogsCorrect.java, generics/GenericMethod.java, generics/Dog.java, generics/Mammal.java, generics/Pair.java
      9. Above classes have package declarations. To compile and run those classes, you need to put them in appropriate directories.
      10. Example for distributed objects (Person class) Person, PersonInterface, Person_Stub, Person_Skeleton, PersonClient
        • "If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime." --Anonymous
      11. AspectJ

      Resources

      1. Popularity of programming languages gives the popularity of programming languages, updated once a month.
      2. C. A. R. Hoare revisits his axiomatic semantics paper, CACM 2009.
      3. Computer Language History
      4. Axiomatic Semantics (book Chapter) , Wikipedia definition.
      5. Sun Java Generics Tutorial
      6. AspectJ book,  AspectJ in Action: Practical Aspect-Oriented Programming, by Ramnivas Laddad (Paperback - Jul 1, 2003)  (sample chapter)
      7. AspectJ project
      8. DrRacket, a language derived from Scheme.
      9. a web based Scheme program development environment WeScheme
       

       

      Dr. Jianguo Lu   Email: jlu at uwindsor,  Office: LT5111