• Lecture time and place: Monday and Wednesday 11:30-12:50 DH 253.
  • Office hours: Monday and Wednesday 2:30-3:30.
  • Instructor: Prof. Jianguo Lu, LT 5111. Email: jlu at uwindsor.
  • Graduate Asistant: Fen Zhao. Email is zhao15m at uwindsor. Office hours: Time: Monday 1:00pm-3:00pm. Location: EH 3146
    Annoucements

    Midterm exam is on October 23, 11:30am. There will be two rooms, DH 253 and 254. Students whose students ID is even will be in classroom 254, the odd number goes to 253.





    Handouts

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

    Assignments

    1. [Functional programming] Due date: October 9.
    2. [ XSLT]
    3. [AspectJ]
    (Bonus project) [ 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

    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) ,
    5. Lambda calculus Wikipedia definition.
    6. Sun Java Generics Tutorial
    7. AspectJ book,  AspectJ in Action: Practical Aspect-Oriented Programming, by Ramnivas Laddad (Paperback - Jul 1, 2003)  (sample chapter)
    8. AspectJ project
    9. DrRacket, a language derived from Scheme.
    10. a web based Scheme program development environment WeScheme