• Lecture time and place: Monday and Wednesday 11:30-12:50 DH 253.
  • Office hours: Monday and Wednesday 2:30-3:30.
  • Final exam: Dec 20 Tuesday, 12:00.
  • Instructor: Prof. Jianguo Lu, LT 5111. Email: jlu at uwindsor.
  • Graduate Asistant: Fen Zhao. Email is zhao15m at uwindsor. She can be reached at ER 3146, from 10:00am-12:00am every Friday.
  • Free tutoring service schedule in Erie Hall 3146.

    • You MUST bring your student ID with you so that you can take the final exam.
    • Office hours: you are still welcome to drop by. I am in office most of the time. TA no longer gives office hours. I will announce more office hours for the days immediately before the exam.
    • You can drop by to review your midterm papers. Note that the raw scores in the Blackboard system are already adjusted to 35% for the midterm.
    • Undergraduate Student Research Awards (NSERC USRA) are available. You are welcome to apply.


    1. (week 1) Course outline [ pdf], overview ( PPT, PDF ).
    2. (Week 2) introduction to programming language classification, paradigms, and history [PPT] [PDF]
    3. (Week 3, 4) Functional Programming
    4. (Week 4) MapReduce [PPT], [PDF] .
    5. (week 5) XSLT [PPT] [PDF] .
    6. (week 6) Logic Programming [Slides(PPT)], [PDF] .
      sample.pl, path.pl, snowy.pl. GNU Prolog can be downloaded from the gprolog.com web site. Supported platforms include Windows, OS x et al. It is also installed on machines in our school.
    7. (Week 7, Review and midterm exam) ( slides ) midterm 2012 (PPT file) (PDF file)
    8. (Week 7) OOP and Polymorphism [PPT] [PDF]
      Distributed object and object persistency [PPT] [PDF] .
    9. (Week 8, 9) Aspect Oriented Programming [PPT] [PDF].

      aop assignment slides . AspectJ installation instructions starts from page 20. AOP and design pattern

    10. (Week 10, 11) Axiomatic semantics[PPT] [PDF] .
    11. Garbage collection, type checking , .
    12. (Week 12 ) review, Online sample test ,
    13. sample questions and answers .


    1. [Functional programming] Due date: October 9.
    2. [ XSLT]
    3. [AspectJ]
    4. [ Method call counter ]

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


    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