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,
- aspects, mixins
- genericity and templates
- reflection: introspection and intercession
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
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?
- introduction to usability
- models of HCI
- case studies and issues
h- Category theory
- morphisms, functors, natural transformations, Yoneda
- categorical logic
i- Advanced formal logic
- proof theory
- model theory; model checking?
j- Models of computation (abstract machines)
- Lambda calculus
- 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?