Challenges
Abstraction
data abstraction
procedural abstraction
Scaling issues
representation
language design and implementation
relative youth of the area
Specification issues