Please note: there may be some adjustments to the teaching arrangements published in the course catalogue for 2020-21. Given current circumstances related to the Covid-19 pandemic it is anticipated that some usual arrangements for teaching on campus will be modified to ensure the safety and wellbeing of students and staff on campus; further adjustments may also be necessary, or beneficial, during the course of the academic year as national requirements relating to management of the pandemic are revised.

Practical Algorithms COMPSCI1021

  • Academic Session: 2020-21
  • School: School of Computing Science
  • Credits: 20
  • Level: Level 1 (SCQF level 7)
  • Typically Offered: Semester 2
  • Available to Visiting Students: No
  • Available to Erasmus Students: No

Short Description

This course is designed to impart a breadth of knowledge on data structures, particularly with respect to the mathematical foundations involved in manipulating them. In doing so, it will also introduce students to foundational mathematical concepts in computing that will help them to better understand efficient programming and will provide a basis on which to build more complex mathematical concepts in later years of study.

Timetable

None

Requirements of Entry

None

Excluded Courses

None

Co-requisites

Testing and Software Improvement

Web Application Systems

Assessment

Written examination 60%, mid semester class tests 10%, in-class quizzes 5% and 25% course work

Main Assessment In: April/May

Course Aims

The aim of this course is to introduce students to the fundamentals of data structures and the algorithms that govern them. They will learn about common structures found in programming and various methods of sorting, searching and sequencing them. They will also be introduced to algorithm complexity and proofs, which should help them to justify design decisions when creating their own software.

Intended Learning Outcomes of Course

By the end of this course, students will be able to: 

1. Implement basic data structures such as arrays, linked lists, binary trees and hash tables in a language of choice. 

2. Use recursion as an algorithm design technique in a piece of software. 

3. Analyse and implement a range of algorithms, including searching and sorting algorithms, and express their complexity using suitable notation. 

4. Use predicate logic, set theory and relational algebra to write assertions and use laws to prove them. 

5. Demonstrate an understanding of inductively generated structures and proof by induction. 

6. Deploy basic concepts of combinatorics in solving mathematical problems.

Minimum Requirement for Award of Credits

Students must submit at least 75% by weight of the components (including examinations) of the course's summative assessment.