CS207 - Advanced Programming
TIMETABLE | TEACHING MATERIAL |
Credits | 20 |
Level | 2 |
Semester | Semester 1, Semester 2 |
Availability | Possible elective |
Prerequisites | CS105 - Programming Foundations |
Learning Activities Breakdown | Lectures: 44 | Labs: 44 Assignments: 84 | Self study: 28 |
Items of Assessment | 3 |
Assessment | Assessment is by 100% coursework. In semester 1, assessment will take the form of 1 class test worth 25% and 1 practical assessment worth 25%. Semester two is a single piece of coursework worth 50% which involves working in a team to solve a client's problem by following an agile software development process. A key part of the course is reflecting on the consequence of design choices made and quality of implementation, and the consideration and appreciation of alternative approaches. |
Lecturer | Martin Goodfellow, Yingying Zhao |
Aims and Objectives
To further the students’ skills in object-oriented programming, provide knowledge of key abstract data types along with their implementation and usage, and to provide experience in the development of software and an introduction to design. The main goal is for students to be able to develop programs with specialized data structures and utilizing APIs from a specification, and being able to ensure and show how the system they developed matches the specification.
Learning Outcomes
On completion of this class, a student should be able:
- to understand and have implemented a range of fundamental abstract data types.
- to understand a number of essential algorithms that are closely associated with these data types.
- to use these algorithms and abstract data types in practical applications.
- to gather and document requirements using a modelling approach such as use cases.
- to design a small system using a modelling approach such as class diagrams.
- to implement a software design to produce a small system as part of a team.
- to write unit tests for code to verify an implementation
Syllabus
- Introduction to Abstract Data Types*: lists, stacks, queues, hash tables, trees, sets, graphs etc.; examples of their definition, different implementations, ADT class libraries and their usage.
- Key algorithms associated with ADTs such as searching and sorting*: introduction to a range of techniques, including the divide and conquer approach. Implementation of algorithms and abstract data types (the aim here is to present a small number of basic, popular algorithms to enable pragmatic implementation, rather than comprehensive coverage).
- Trees: n-ary and binary* trees; typical instances and uses of trees; ADT implementation; algorithms covered include insertion* and traversal; the significance of different modes of traversal.#
- The second semester will introduce the overall software development process. This will include requirements, analysis, design, implementation and testing. These stages will be documented using models such as class diagrams, activity diagrams, and sequence diagrams as defined in the Unified Modelling Language (UML). An essential feature of this class is the practical element – the opportunity for students to experience the design and implementation of a small system in small teams.
Note: topics covered in semester 1 will be used to facilitate semester 2 content of CS208
Recommended Reading
This list is indicative only – the class lecturer may recommend alternative reading material. Please do not purchase any of the reading material listed below until you have confirmed with the class lecturer that it will be used for this class.
Recommended texts will be provided in class where appropriate.
Last updated: 2024-07-30 18:11:54