CS12615 Design of Information Structures
Introductory description
CS126 is all about data structures and how to program them.
We are interested in: what common data structures exist; how we can program those data structures; how we can represent them efficiently; how we can reason about them (in a formal manner).
We are also interested in common algorithms that use data structures, including: searching for data; sorting data.
Module aims
The module aims for students to:
 gain familiarity with the specification, implementation and use of some standard abstract data types (ADTs) such as linkedlists, stacks, queues, graphs etc.
 learn some standard algorithms for common tasks (such as searching and sorting) and some elementary methods of measuring the complexity, and of showing the correctness, of algorithms;
 learn how to program with nonstandard ADTs using an
objectoriented language.
Outline syllabus
This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.
 Types and their properties: simple types in programming languages; relationship between familiar mathematical and program objects of given type. Using predicate logic to state properties of types and their operations in terms of pre and postconditions.
 Abstract data types: specification of familiar abstract objects (eg complex numbers, sets, sequences, matrices) and their operations, comparison with their implementation using a typical programming language. Specification and implementation of some important standard types (eg strings, stacks and queues).
 Algorithms: relationship between data structures and algorithms; some standard algorithms for searching, sorting and pattern matching. Elementary analysis of complexity. Reasoning about the correctness of the implementation of simple algorithms.
Learning outcomes
By the end of the module, students should be able to:
 After completing CS126 Design of Information Structures, a student should be familiar with a range of standard ADTs and how they can be used to accomplish common programming tasks.
 After completing CS126 Design of Information Structures, a student should be able to assess the complexity and correctness of simple algorithms, and choose appropriate algorithms for simple tasks.
 After completing CS126 Design of Information Structures, a student should have practical experience of designing userdefined ADTs, and associated algorithms, for a nonstandard application.
Indicative reading list
Please see Talis Aspire link for most up to date list.
View reading list on Talis Aspire
Subject specific skills
 Specifying abstract data types and implementing them in an objectoriented programming language
 Estimating the asymptotic running time of simple algorithms
 Using basic data structures to implement efficient algorithms
Transferable skills
 Creative problem solving
Study time
Type  Required 

Lectures  30 sessions of 1 hour (20%) 
Practical classes  8 sessions of 2 hours (11%) 
Private study  104 hours (69%) 
Total  150 hours 
Private study description
 Background reading.
 Creative problem solving, either individually or in groups.
 Programming for the lab assignments and coursework.
 Revision.
Costs
No further costs have been identified for this module.
You do not need to pass all assessment components to pass the module.
Students can register for this module without taking any assessment.
Assessment group C3
Weighting  Study time  

Lab sessions  10%  
Marked Laboratory sessions. 

Programming assignment  40%  
Programming Assignment.. This assignment is worth more than 3 CATS and is not, therefore, eligible for selfcertification. 

Inperson Examination  50%  
Examination

Assessment group R1
Weighting  Study time  

Inperson Examination  Resit  100%  
Resit Examination

Feedback on assessment
Mark and written feedback for coursework returned via Tabula.
Prerequisites
Students must have studied the material in CS118 or MA117
Courses
This module is Core for:

UCSAG500 Undergraduate Computer Science
 Year 1 of G500 Computer Science
 Year 1 of G500 Computer Science

UCSAG503 Undergraduate Computer Science MEng
 Year 1 of G500 Computer Science
 Year 1 of G503 Computer Science MEng
 Year 1 of G503 Computer Science MEng
 Year 1 of UCSAI1N1 Undergraduate Computer Science with Business Studies
 Year 1 of UCSAG406 Undergraduate Computer Systems Engineering
 Year 1 of UCSAG408 Undergraduate Computer Systems Engineering

USTAG302 Undergraduate Data Science
 Year 1 of G302 Data Science
 Year 1 of G302 Data Science
 Year 1 of USTAG304 Undergraduate Data Science (MSci)

UCSAG4G1 Undergraduate Discrete Mathematics
 Year 1 of G4G1 Discrete Mathematics
 Year 1 of G4G1 Discrete Mathematics
 Year 1 of UCSAG4G3 Undergraduate Discrete Mathematics
This module is Optional for:
 Year 1 of USTAG1G3 Undergraduate Mathematics and Statistics (BSc MMathStat)

USTAGG14 Undergraduate Mathematics and Statistics (BSc)
 Year 1 of GG14 Mathematics and Statistics
 Year 1 of GG14 Mathematics and Statistics
This module is Option list B for:

UMAAGV18 Undergraduate Mathematics and Philosophy with Intercalated Year
 Year 1 of GV18 Mathematics and Philosophy with Intercalated Year
 Year 1 of GV18 Mathematics and Philosophy with Intercalated Year