Computer Science

Principles of Computer Science: COMPSCI 105 Semester 2 2017

Description & Content

This course extends the programming skilled obtained from the first programming course (COMPSCI 101) emphasising good software design through an appreciation of data structures and code efficiency. The course provides an introduction to objects and classes, exception handling, algorithm analysis and recursion. The importance of abstraction and abstract data types is illustrated through the study of traditional data structures (such as linked lists, stacks, queues, trees and hash tables). The performance characteristics of different implementations of these data structures are studied, aided by an introduction to the performance of searching and sorting algorithms.

Final Learning Outcomes

A student who successfully completes this course should be able to:

  • define a class to represent an object
  • write code which handles exceptions
  • use a standard data interchange method to read and write complex data types
  • write simple programs that use standard linear data structures to store data (Arrays, Linked Lists, Stacks, Queues)
  • write simple programs that use standard non-linear data structures to store data (Hash Tables, Trees)
  • compare algorithms based on their Big-Oh performance
  • implement recursive solutions to simple problems
  • implement recursive data structures such as linked lists and trees
  • explain the basic algorithm for any of the studied sorting methods
Top Top
  • Labs (10%)
  • Assignments (15%)
  • Test (15%)
  • Exam (60%)

COMPSCI 105 is a practical course, which means you must pass both the practical (assignments and labs) and the theory (test and exam) sections separately. The pass mark is likely to be 50% but might be lower. If you have not achieved 50% in the practical part you are still advised to sit the exam.

  • Contributes 15% to your final grade
  • Closed book
  • No calculator
  • Date: 22/09/2017

  • The final exam is worth 60% of your final mark.
  • It is a 2 hour exam. Please check Student Services Online for a confirmation of the date and time.
  • Examination room lists will be posted online and on Campus noticeboards by 5.00pm the day before your examination.
  • The exam is closed book, and calculators are not permitted.
  • Exams from previous semesters can be found at the University library site under "Readings & Exams".

The recommended textbook is "Problem Solving with Algorithms and Data Structures" by Brad Miller and David Ranum. This is an open-source book, so we have made minor edits to the text and digital copies are freely available from the COMPSCI 105 website.

Lecture Times and Locations

Please check Student Services Online for the latest lecture times and the lecture venue (sometimes this changes!)

Stream 1 Times:

  • Tuesdays 9 - 10 am, 401-401 (Engineering Block 1 - 401)
  • Wednesdays 9 - 10 am, 401-401 (Engineering Block 1 - 401)
  • Thursdays 9 - 10 am, 109-B15 (Library - B15)

Stream 2 Times:

  • Tuesdays 4pm - 5pm, 109-B15 (Library - B15)
  • Wednesdays 4pm - 5pm, 109-B15 (Library - B15)
  • Thursdays 4pm - 5pm, 109-B15 (Library - B15)

Lecture Schedule

Canvas System
  • All marks, lecture recordings and announcements can be found on the Canvas system.
  • Lecture recordings will be uploaded as soon as possible after each lecture.
  • Please check your marks each week and contact the lecturer(s) if there are any problems.

You should attend one 1-hour lab each week. Labs are described in more detail on the labs page. Each lab is worth 1% of your final mark. Labs start in week 2 of the semester.


There are two assignments in total: each assignment is worth 7.5% of your final mark. Assignments are described in more detail on the assignments page.


A forum for class discussions is available at Please read the Compsci 105 forum regularly. On the Compsci 105 forum, you may discuss topics related to this course and you will find useful information about the lectures, labs and assignments. Any announcements about the course will be posted in the Announcements thread on the Compsci 105 forum.

Catching up on missed lectures and assignments
  • If you miss a lecture, you should catch up as soon as possible by reading the corresponding lecture notes and by watching the corresponding lecture recording.
  • If you miss the deadline for an assignment and have a valid reason, you should see the lecturer whose assignment it is.
  • If you miss the test/exam for any valid reason, or you sit the test/exam but believe that your performance was impaired for some reason, then you should apply for an aegrotat, compassionate or special pass consideration. For more detailed information, refer to the Examinations website under the Illness, injury or misfortune affecting examinations section.

We will be programming in Python 3. Programs submitted in solution to assignments should have been tested using Python 3.

  • If you need extra help with understanding the course material, or preparing for the test or exam, you are very welcome to visit the lecturer(s). The tutors will also be available to help you during the lab sessions in the basement level undergraduate labs, and the lab demonstrators are all able to help with the Compsci 105 material.
  • Please remember that there are other sources of assistance that could be of use. Do not forget the student learning services if you are having trouble keeping up with your courses – see ESOL students can obtain targeted language assistance from the DELNA programme, check

We will make any announcements which affect the class at the lectures. We will also send announcements to the class through Canvas.

Top Top

Apply now!


Postgraduate study options

Computer Science Blog

Please give us your feedback or ask us a question

This message is...

My feedback or question is...

My email address is...

(Only if you need a reply)

A to Z Directory | Site map | Accessibility | Copyright | Privacy | Disclaimer | Feedback on this page