CS405 content 2013-4
The ten weeks of the module will be devoted to addressing the following questions:
- Orientation
- To what extent have the problems that underlie the 'software crisis' been resolved?
- Can current principles and tools for software development meet the additional challenges that contemporary use of computers present?
- Construals
- Do we / why do we need a science of computing that is broader than 'computational thinking' supports?
- What alternative core focus is there for computer science other than programming?
- Making construals
- What principles and tools are best suited to making construals?
- What role can the computer play in their construction?
- Programming paradigms
- Is every principled way to use the computer just a different style of programming a Turing machine?
- Is it possible to resolve the problems of software development by integrating different styles of programming, and why is this so difficult?
- Formalism
- What is the role and potential for formal specification and verification in software development?
- Is there any alternative basis on which the quality of software can be assured?
- Development process
- To what extent can techniques such as agile development and scripting resolve the problems of meeting users' evolving requirements?
- Can the demands of users of the web, mobile devices and embedded systems for ways to customise applications flexibly in the stream-of-thought be addressed within the conceptual framework of software development as currently understood?
- Learning
- How well is current thinking about software development suited to the constructionist goal of establishing an intimate link between development and domain learning?
- What can be learned from parallel research in educational technology?
- Concurrency
- How well do current software development techniques address the need to represent and reconcile the perspectives of all the state-changing agents in a complex system?
- Do informal commonsense notions of concurrency have any place in software development?
- Multi-agent development
- How can we integrate the design activities of the many different participants in complex software system development, as when supporting distributed participatory design?
- What kinds of development approach can help us to achieve conceptual integrity?
- Retrospect and prospect
- How far does the reconceptualisation of computing associated with making construals address the challenges of software development?
- What further development of the principles and tools is needed?