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

School of Computer Science, University of Windsor

 

  • Lecture time and place: Thursday 16:00-18:50, DH 350
  • Office hours: Tuesday 1-2:30, Thursday 1-3. Also available during reading week.
  • Instructor: Jianguo Lu, LT 5111. Email: jlu at uwindsor.
  • GA: David Wang, email: wang112s at uwindsor. Office hours: Fridays 4PM-5:30PM, location: Erie Hall 3139

    Now your grade is available from the following search form. You can review your exam papers on January 7 12-2pm.
    To get your grade, 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) Axiomatic semantics. [Slides] , More example
    4. (Week 4, 5) OOP slides [part 1], [part2].
    5. (Week 5, 6, 8) Aspect Oriented Programming, Slides [AOP 1] [AOP2]
    6. (Week 7 ) review, Sample questions 1 for 2009 , Online test ,
    7. (Week 9) Functional Programming [ Scheme] [ Lambda calculus], Sample scheme programs,
    8. (week 10) XSLT [ Slides]
    9. ,
    10. (week 11) Logic Programming [Slides], sample.pl, path.pl, snowy.pl
    11. MapReduce, Mashup .
    12. Sample exam questions [Midterm 2006 Winter] [Final sample exam] Note that questions related to web service (such as Question 19) are not covered in this year's course, hence they will not be tested.

    Assignments

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

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

       

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