CPSC 511: Course Schedule

Note that the schedule below will be refined and undergo changes as the course progresses. Check back here often!


Week #
Day
Date
Topic
Due
Module 0: Introduction
1
Mon
3-Sep
Labour day


Wed
5-Sep
No classes first week of term.

2
Mon
10-Sep
Lecture: Course organization and overview. Continuations on the web
Lecture Materials and Software


Wed
12-Sep
Lecture: Introduction to Scheme.
Lecture Materials (review before lecture)
Plan: A class exercise using Scheme.

Preparation:
  • If you have a laptop: install DrScheme on your machine and bring it to class.
  • Review the "Crashcourse" slides.
3
Mon
17-Sep
Lecture: Introduction to Scheme continued.

Focus of this lecture is on higher-order procedures and "advanced" Scheme idioms.

Lecture style: Powerpoint presentation with short breaks for doing (some of) the exercises

Lecture materials:
  • Scheme crashcourse slides (see above, slides 49 and onward)
  • Exercise code: Starter file.
CS511 student profile.
Module 1: Procedures, environments, scope and continuations


Wed
19-Sep
Lecture: An environment passing interpreter for a simple procedural language. ProcLiLa.

We will build on course material from CPSC 311. If you are not familiar with the material you should make an effort to thoroughly review the material before lecture.

The plan for this lecture is to work upto a point so that everybody in class is familiar with most of the material from CS311 section 02 and 03.

Reviewing the material before lecture is important because rather than a traditional "lecture" style where I flash powerpoint slides at you, I might try to do a more hands-on exercise in class.

Notes on what to do to prepare:
  • Go through all the material in section 02 and 03. The material on references may be skipped to save time.
  • Try to do the exercises in the slides. If you can't or don't understand, plan to bring those up in lecture.
  • If you have a laptop... install DrScheme, and the section 3 code and make sure you know how to run it. Bring the laptop.
Learn Scheme: You should aim to know enough of Scheme to do  CPSC 311 HW 1 (solution)

Review materials before lecture:

  • Section 02 (Anatomy of a Definitional Interpreter): Review the slides and Scheme code.
  • CPSC Section 03: Review slides and the main interpreter code (found in ProcLiLa.scm).
4
Mon
24-Sep
Plan for this lecture:
  • Continue the exercise from last lecture (see the file 511_lecture_exercices.scm which was also included in the code (section 03) package posted for Wed 19-Sep).


Wed
26-Sep
Exercise: The dog ate my lambda solution: here

Lecture:
Continuations and continuation passing style in the interpreter.

Plan for this lecture:
  • Cover Material CS311 section 04 "continuations"
    • Explain why / how we convert our ProcLiLa interpreter to CPS
    • Play with the finished interpreter and see/understand how it works.
    • Show some examples of using continuations to model language control-flow constructs:
      • loop/exit, return (explain in lecture)
      • exception handling (do together in lecture.

Lecture Materials:
  • CPSC 311 Section 04: Continuations and Control-flow. Slides and Code.

5
Mon
Oct 1
Lecture
Call-with-current continuation what is it, how does it work (by implementing it in CPS interpreter)

Lecture Materials:
Paper review: submit a review of the paper "Programming the Web..." by email to kdvolder@cs.ubc.ca

Read the instructions and use the form provided on this webpage.
Module 2: Classes, Objects and Aspects

Wed
3-Oct
Lecture Topic 1: Continuations and the Web.

Paper discussion
:
Extra Reading:
  • Beating the Averages. Paul Graham 2001. -- Paul Graham's ideas on the importance of Lisp in the success of Viaweb Yahoo webstores.

Review materials before lecture:
Review the following materials
Focus on the slides upto 63, and the code in "ClassLiLa.scm".

The class exercise will require you to work with the classLiLa code so you should attempt to be somewhat familiar with it.

Fri
5-Oct
This is not a lecture day.
Pre-proposal Deadline:
Please send me a "preproposal". What's that? Just a very short email with a short and informal description of your current thoughts on what you want to do as a course project. A title/topic and a few paragraphs of text will do.

What's this for? I want to make sure everyone is already thinking about a project topic and finding something they are interested in. I encourage you to talk to me after lecture, or make an appointment to talk to me some other time to help this process of coming up with a proposal before the actual proposal deadline of Mon oct 16.
6
Mon
8 Oct
Thanksgiving Holliday


Wed
10-Oct
Lecture: Object-oriented programming intro.

Lecture materials
Focus on the slides upto 63, and the code in "ClassLiLa.scm".

The class exercise will require you to work with the classLiLa code so you should attempt to be somewhat familiar with it.

Plan:
  • 20 minutes: Intro
    • Have a brief discussion about "What is OO".
    • Explanation of ClassLiLa
      • object representation
      • inheritance
      • self and super sends
  • 30 minutes: Get familiar with the code.
  • 30 minutes: class discussion about "semantic variations" (slides 63 and onward).
Read/review papers:

7
Mon
15-Oct
Aspect-Oriented Programming Intro

Plan: Discussion about AOP (see the paper on the reading / review list for Wed Oct 10 th)


Wed
17-Oct
Topic: "AspectJ" and "AspectLiLa".

Plan:
  • Presentation of Gregor's AspectJ intor
  • Presentation of AspectLiLa
  • Class exercise
Course project proposal due!

Note: Some guidelines where added to the project page. Read them!

Review Lecture Materials:
8
Mon
22-Oct
Presentation / Class exercises continued

Wed
24-Oct
Discussion: Aspect Orientation and Tools Read/Review paper:
 9
Mon
29-Oct
AOP in the real world

Plan for this lecture. Small groups discussion.

Topic:
You are an employee in HighTech Corp which developes Enterprise software in Java. You have been assigned to a committee to make a decision on whether or not your company is going to run an experiment to adopt AspectJ and AOP into your company's development process. What say you? Yes or no!

Preperation: Try to prepare for the discussion by
  • reading the stuff on the right.
  • come up with as many pro and contra arguments as you can think of.
  • try to make up your mind before lecture and formulate some convincing arguments you might use to convince team-mates who hold oposing views.
Reading Materials:
Note: The articles abover may provide some fodder for the discussions but they are decidedly pro Aspects. So in order to be critical you may need to look for good contra aspects points of view and arguments elsewhere. Here's a start (no guarantee on their quality though :)
There's more stuff "out there".
Module 3: Types and Checking

Wed
31-Oct
Lecture: Type Checking

Plan: Lecture combined with Class exercise with the type checking code and slides.
Read: Inroduction of "Types and Programming Languages" Benjamin Pierce. Copies will be available in the reading room.

Study the Lecture Materials: CS 311 Section 05 slides and code.
10
Mon
5-Nov
Plan: Continue exercise from last lecture


Wed
7-Nov
Discussion in small groups:

Topic 1:
Wrap up TypeLiLa lecture material.

Topic 2:
Java Generics

Assume you are on the Java language design team (before Java 1.5 generics got added). You have to make a dccision about adding generics to Java. There are three broad options:
  1. Adopt the GJ proposal (maybe with minor modifications). => How Java is today
  2. Look to C# and do something more similar to C# (see internet, e.g. here for a discussion of the differences between C# and Java generics).
  3. Decide not to adopt generics in to Java.
Topic 3: Alias types (if time remains)

You are a member of the Java language design team. You've just read the paper by Aldrich et. al. on Alias annotations. The purpose of today's design-team meeting is to make a decision on adding this to Java (e.g. add to Java 2.0).

Options:
  1. Yes. Let's add this to Java.
  2. No. This is not a good idea because... So let's not do that.
  3. Defer. There's not enough information to decide. Let's shelve the discussion and do something else (what?) first so we may be in a better position to dccide in the future.
Note: From here on down writing a review for a paper is optional. You should submit at least one more review before the end of term. You can chose which paper to write a review of from any of the papers we will read for the remainder of the course.

Read Papers

Extra Reading:
  • Java Generics Tutorial, Sun Microsystems, 2004. (If you are interested in seeing how Java 1.5 generics turned out and differs from GJ, this Tutorial provides a readable and extensive tutorial overview of Java 1.5 generics.)
11
Mon
12-Nov
Holliday (Substitute for Remembrance Day)


Wed
14-Nov
Paper Discussion: Checking beyond type checking. Read/Review Papers
  • Righting Software. James R. Larus, Thomas Ball, Manuvir Das, Robert DeLine, Manuel Fähndrich,
    Jon Pincus, Sriram K. Rajamani, and Ramanathan Venkatapathy. IEEE Software 2004.
  • Finding Bugs is Easy. David Hovemeyer and William Pugh. SIGPLAN Notices December 2004. (Related link: FindBugs Homepage)
12
Mon
19-Nov
Paper Discussion: Checking Continued...

Plan:
  • Short presentation from each discussion group about "the dimensions of the bug-checking/finding tools design space".
  • Class discussion about ESC/Java and Vault.
Read Review papers:

Wed
21-Nov
Discussion: The Future of Software Development Tools and Languages.

We will try to have a discussion loosely centered around the question:

What will the software development environments of the future look like?

Preparation:
  • Read the essay by S. J. Gould "The Panda's Thumb of Technology" this is supposed to make you think not just  about "what is good technology " but also about how does technology come to be the way it is and why do some technologies make it while others don't. Is technology made by a deliberate design? Or is it a product of evolutionary processes and pressures?
  • Think about all the topics covered in the course. Don't limit yourself to this. Consider other things you might have seen or heard of elsewhere. Do you see important trends. What do you think will be the "next big thing". What do you think are the biggest problems software developers face today and in the future? What kind of solutions/techologies do you think will become important to address these. Which of these do you think have good chances of being succesful in the "mainstream". Pick one technology which you think will be "the next big thing" and prepare to defend your position.
Plan for the lecture:
  • Group discussion: 50 minutes
    • Stage 1: 30 minutes
      • Make a list of trends and issues you think will be important in pushing or shaping the development of software development tools and languages.
      • Prioritize these trends and issues in how important you think they will be in the next decade or so.
    • Stage 2: 20 minutes
      • Focus on one of the trends/issues from stage 1 which you think will be the most important.
      • Put together a short presentation max 3 slides (target = 5 to 10 minutes).
  • Presentation: 30 minutes
    • Each group gives a short presentation (5-10 minutes focussed on a single topic/issue (stage 2 above) how do you think this issue may impact future SD environments.
Reading
  • The Panda's Thumb of Technology. S. J. Gould in "Bully for Brontosaurus - Reflections in Natural History". ISBN 0 09 989350 9. Published by Vintage 2001. Copies handed out in lecture monday Nov 20th. and available in the CS reading room after lecture.
13
Mon
26-Nov
Discussion: What is Good and Bad Modularity? What is it worth? What does it cost?

Preparation:
  • Read the papers in the right column
  • Think about the questions in the above discussion topic.
Plan:
  • Some pratical guidelines for paper/presentation.
  • Announce Mini Conference Program.
  • Discussion: Use the following questions as a catalyst to drive your discussion.
    • Is modularity always good? How do you know it is good/bad? (Is there a "test of good modularity?")
    • How do we get good modularity?
      • Proactive (upfront desing) or  oportunistically (e.g. like an Extreme Programming approach)
    • What does good modularity buy us?
    • What does bad modularity cost us?
    • What does good modularity cost us?
Reading:

Wed
28-Nov
Modularity discussion continued...

Preparation:
  • Read the text "Notes on Structure Programming". It is quite long, but reads fairly easily. Read at least up to page 30 (i.e. read up to and including section "On understanding programs").
  • Try to understand Mr. Dijkstra's argument why "structured programming" is better than "goto programming".
  • While you read this text which is now over 35 years old, think about how it applies/maps onto our present  situation. Try to draw parallel's between Mr Dijkstra's arguments and ideas such as object-oriented programming, aspect-oriented programming. Do they fit? Do they conflict? How?
Reading:
Extra:
End of lectures

Sat
1 Dec
Not a lecture day.
Deadline submit title and abstract. (Deadline for actual paper submission postponed to Dec 14th)

Guidelines for paper/submission/presentation

Wed
5 Dec
CS 511 Mini Conference (10 AM - 1 PM)
Prepare a 10 to 15 minute presentation of your work.


14 Dec
Not a lecture day
Deadline submit termpaper by Dec 14 at 11:59 PM (i.e. midnight)