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.

Programming and Systems Development (H) COMPSCI4084

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

Short Description

Provides a short, intensive, hands-on introduction to the software and tools necessary for the MSc programmes in Computing Science: the Java and Python programming languages, associated tools, and the LINUX operating system.


Weeks 1-6 of Semester 2 (six weeks)

Two hours of lectures and 7 hours of labs (three two-hour labs and one one-hour lab) per week. 

Lab exam to be taken during lab session during final week of teaching

Requirements of Entry

Acceptance into one of the MSc programmes listed in section 10 below.

Excluded Courses





Lab exam, worth 50%, arranged in-house.

Team development project, worth 20%

Three practical assessed exercises, worth 10% each

Course Aims

■ To enhance existing skills and practical processes for programming in Java and Python, which are the main languages used in the MSc programme

■ To improve skill at using online information to pick up new languages, APIs or tools

■ To become familiar with common tools needed to build working systems, including repositories, virtual machines and servers.

■ To develop knowledge of the use of the LINUX operating system and experience of using the tools available under LINUX for programming and system administration.

Intended Learning Outcomes of Course

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

1. Demonstrate familiarity with the relevant modern programming environments;

2. Use the command line and a text editor competently, ideally with experience with a modern IDE; 

3. Develop well-structured programs in Java and Python, and be proficient in looking for online help, and be prepared to pick up new skills independently;

4. Explain the importance of concise and informative documentation, and use modern documentation tools;

5. Provide evidence of program correctness through thorough testing;

6. Describe and use version control processes, and be able to checkout and use a repository (e.g. git);

7. Launch, edit and use Jupyter/Colab notebooks (including ability to work with basic operations on numpy arrays);

8. Use basic SQL from Java and Python, and be able to set up a basic server;

9. Be able to spin up a Container (e.g. Docker VM (and/or Kubernetes));

10. Creating/adapting a basic graphical user interface (give them some exposure to a modern GUI and how to adapt it);

11. Describe the basics of user interaction with the Linux shell, file navigation, system monitoring, printing;

12. Explain how to install and configure software under Linux, and be able to write and execute simple Linux shell scripts.

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.