Courses in Computer Science, Roskilde University
CSS: Creating Software Systems (preliminary course description)
Design and implementation of small to medium sized applications in a mainstream programming language. The course emphasises complete applications from the start, with simple graphical user interfaces, file input and output, testing and documentation. Basic data structures and algorithms on arrays, stacks, binary trees, graphs. Sorting, searching. Hash tables. Basic reasoning about correctness and complexity.
Topics:
- Describing the essentials of the system. What is the software system for? Who will use it? What is its overall structure? What are its interfaces?
- The components of a system, including user interfaces, processing, data storage, interfaces to other systems.
- User interface design concepts. Simple graphical user interfaces. Reading from files or other documents.
- Fundamental structures for storing and processing information (arrays, trees, sets, maps, graphs, strings). Sorting, searching, indexing, hashing, matching.
- What is a correct program? How to test a program. Module based testing. Integration test. Is testing enough? Basic notions of program verification.
- What is efficiency? How is it measured? Scalability. Basic complexity, big-Oh notation.
- Exploiting libraries and reusable components.
The student taking the course will develop the ability to
- design and implement small but complete software applications
- test a program (module testing, integration testing)
- reason about the correctness of simple programs
- reason about the complexity and resource usage of programs
- choose between different data structures for different tasks
- implement fundamental data structures (trees, arrays, linked lists, graphs, hash tables)
- implement fundamental algorithms (such as binary search, sorting, tree and graph traversals, string matching).
Edited by
Henning Christiansen,
20-sep-2010