CS2101: Foundations of Computation (Accelerated)
This module is offered in 2020-21.
- To introduce algorithms from an analytical point of view.
- To use data structures (data type design) as a vehicle for the elements of algorithm design.
- To introduce students to object-oriented (OO) modelling, design and programming concepts demonstrated using a high-level OO programming language.
- To develop an awareness of the importance of data storage and processing in software systems.
- To use programming projects as a vehicle for consolidating practical skills in OO programming.
On successful completion of this module, the student should:
- Be aware of the need for abstraction in data type design.
- Be familiar with a variety of common data structures and the basic theory of algorithms; understand the basics of programming language theory and compilation.
- Have mastered concepts of OO modelling, design, and programming, and attained practical skills in applying these concepts in a high-level OO programming language.
- Have a working knowledge of common OO design patterns and relevant Java class libraries and be conversant with effective documentation, layout, debugging and testing.
- Be able to use OO programming and development tools.
- Understand the role of data in software systems, the advantages and disadvantages of file and database storage.
- Be able to model, design and implement programs with graphical user interfaces, network access, and programs which store and manipulate data.
- Abstract Data Structures: implementation and use of lists, arrays, sets, stacks, queues, trees and maps.
- Programming Language Fundamentals: basics of programming language theory and processing: syntax and parsing.
- Variables and data types, choice and iteration, objects, attributes, method and class structures, object references, inheritance, object-oriented modelling, UML, I/O mechanisms including files, textual and graphical interfaces, networking, design patterns, exception handling, development and testing strategies and commenting and documentation techniques.
- Data representation and models, semi-structured data, persistent data formats and databases, database design and use, processing and analysing data, issues of scale.
This module has no compulsory elements beyond those common to all sub-Honours modules (tutorials, mark of 4 in each assessment component).