Using Data Structures in Applications
Run by School of Computer Science and Electronic Engineering
20.000 Credits or 10.000 ECTS Credits
Organiser: Dr William Teahan
Overall aims and purpose
To learn and practice how to choose and use optimal data structures and algorithms to solve challenging problems. To introduce concepts of advanced data structures.
Indicative content includes:
- Applying the common abstract data types to applications.
- Rules of thumb for choosing among the options.
- Performance and efficiency characteristics of each type.
- More advanced data structures, e.g. hash tables, heaps, and balanced search trees.
Equivalent to 40%. Uses key areas of theory or knowledge to meet the Learning Outcomes of the module. Is able to formulate an appropriate solution to accurately solve tasks and questions. Can identify individual aspects, but lacks an awareness of links between them and the wider contexts. Outputs can be understood, but lack structure and/or coherence.
Equivalent to the range 70%+. Assemble critically evaluated, relevent areas of knowledge and theory to constuct professional-level solutions to tasks and questions presented. Is able to cross-link themes and aspects to draw considered conclusions. Presents outputs in a cohesive, accurate, and efficient manner.
Equivalent to the range 60%-69%. Is able to analyse a task or problem to decide which aspects of theory and knowledge to apply. Solutions are of a workable quality, demonstrating understanding of underlying principles. Major themes can be linked appropriately but may not be able to extend this to individual aspects. Outputs are readily understood, with an appropriate structure but may lack sophistication.
Evaluate and select appropriate data structures and algorithms to solve a given problem.
Evaluate algorithm-based solutions in terms of efficiency, both in terms of time and space.
Implement data structures and algorithms for problem-solving.
Describe the design and implementation of more advanced data structures.
A series of assessed laboratories, building all the necessary skills for building applications in Python using advanced data structures and algorithms.
Teaching and Learning Strategy
|Practical classes and workshops||
Laboratory instructions and exercises.
Interactions via questions-and-answers.
Tutor-directed study, including individual assignments.
- Numeracy - Proficiency in using numbers at appropriate levels of accuracy
- Computer Literacy - Proficiency in using a varied range of computer software
- Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
- Exploring - Able to investigate, research and consider alternatives
- Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.
- Presentation - Able to clearly present information and explanations to an audience. Through the written or oral mode of communication accurately and concisely.
- Argument - Able to put forward, debate and justify an opinion or a course of action, with an individual or in a wider group setting
- Self-awareness & Reflectivity - Having an awareness of your own strengths, weaknesses, aims and objectives. Able to regularly review, evaluate and reflect upon the performance of yourself and others
Subject specific skills
- Apply an understanding and appreciation of continuous improvement techniques
- Apply knowledge and understanding of the specialist cognate area of computer systems for controlling complex systems;
- Solve problems logically and systematically;
- Knowledge and understanding of facts, concepts, principles & theories
- Use of such knowledge in modelling and design
- Problem solving strategies
- Analyse if/how a system meets current and future requirements
- Deploy theory in design, implementation and evaluation of systems
- Specify, design or construct computer-based systems
- Evaluate systems in terms of quality and trade-offs
- Deploy tools effectively
- Development of general transferable skills
- Deploy systems to meet business goals
- Specify, deploy, verify and maintain information systems
- Defining problems, managing design process and evaluating outcomes
- System Design
- Knowledge and/or understanding of appropriate scientific and engineering principles
- Knowledge and understanding of mathematical principles
- Knowledge and understanding of computational modelling
- Specify, deploy, verify and maintain computer-based systems
Resource implications for students
There is a pdf of the main course text feely available online.
Talis Reading listhttp://readinglists.bangor.ac.uk/modules/ice-3212.html
Data Structures and Algorithms in Python - Goodrich, M., Tamassia, R. and Goldwasser, M. 2013. Wiley Publishers.
Courses including this module
Optional in courses:
- G400: BSC Computer Science year 3 (BSC/CS)
- G40B: BSc Computer Science (4 year with Incorporated Foundation) year 3 (BSC/CS1)
- G40F: BSc Computer Science year 3 (BSC/CSF)
- H117: MComp Computer Science year 3 (MCOMP/CS)