Learning Lounge

PB schizophonic@tiscali.it
Thu May 15 05:41:02 2003

Marc Santoro wrote:
> After a bit of discussion with Brian Rice today on IRC, I spent some 
> time examining the Learning Lounge.

I've reckoning for some time about the Learning Lounge.
I agree that it should be reorganized.
I also agree that the learning curve should be lowered.
I do not completely agree on your proposal, for some
reasons. I'm sorry if I will be somehow blunt in some
of my statements.

1- Ok, we do not want to grow a generation of categorists
or of gurus in linear logic. But I think that completely
removing the foundational topics is a mistake. Rather,
one should detect which foundational topics are compulsory
and which are not, at least to create a common vocabulary
of terms and concepts.

2- I do not see an overall organization in your proposed
path. It appears as a huge course on programming languages
concepts, with some external unrelated topics. I would first
detect the core areas in TUNES, and then organize the courses.
I propose a (tentative) alternative organization of topics,
each with a chaotic list of stuff that can be put inside:

   a- Programming languages concepts:
       - functional and logic languages: Lisp/Scheme, Haskell,
         laziness, (co)induction; Prolog, Curry?
       - objects and classes: Squeak, CLOS
       - polymorphism and dynamic dispatching (single, multiple):
         Java (as a contrived example), Cecil?
       - prototype-based object languages: Self, Slate
       - issues and troubles related to languages based on objects,
         classes, etc
       - aspects, mixins
       - genericity and templates
       - reflection: introspection and intercession
       - Maude
       - Joy
   b- Foundational theoretical topics:
       - Computability theory (Church thesis, Rice and fixpoint theorem)
       - Formal logic (classic and, perhaps, linear)
       - Equational logic and universal algebra
   c- Formal semantics:
       - Rewrite systems
       - Lambda calculus
       - etc...
   d- Issues related to locality
       - Formal systems: CCS, CSP, pi-calculus, ambients, whatever
       - Remote interaction techniques: RMI, message passing, P/S, etc
       - Techniques for code mobility: Migration, code-on-demand, etc
   e- Advanced programming techniques
       - Algorithms and data structures in diverse languages,
         with comparisons of advantages and disadvantages
       - Using languages in practice: exploiting features of functional,
         logic, OO, generic, reflective, whatever, languages
       - Programming with monads
       - Patterns and software architectures
   f- Software engineering
       - Specification languages
       - Ensuring formal properties of software; Hoare triples; PCC
       - B method?
   g- HCI
       - introduction to usability
       - models of HCI
       - case studies and issues
   h- Category theory
       - morphisms, functors, natural transformations, Yoneda
       - constructions
       - categorical logic
       - monads
       - ???
   i- Advanced formal logic
       - proof theory
       - model theory; model checking?
   j- Models of computation (abstract machines)
      - Lambda calculus
      - FORTH
      - WAM
      - GOI
      - For concurrent, distributed, mobile systems: CHAM;
        CCS, CSP, pi-calculus, ambients, whatever
      - categorical abstract machine
      - ???
   k - Advanced algebra
       - Universal coalgebra
       - Hidden algebra

Topics are unsorted. We can then suggest some paths depending
on what kind of culture one wants to achieve; for instance
we can suggest b-a-e to people willing to work on the HLL,
b-c-j-(k) for LLL, etc.

3- Am I asking too much for a Learning Lounge?