THE UNIVERSITY of EDINBURGH

DEGREE REGULATIONS & PROGRAMMES OF STUDY 2024/2025

Timetable information in the Course Catalogue may be subject to change.

University Homepage
DRPS Homepage
DRPS Search
DRPS Contact
DRPS : Course Catalogue : School of Informatics : EPCC on-campus

Postgraduate Course: Practical Software Development (EPCC11001)

Course Outline
SchoolSchool of Informatics CollegeCollege of Science and Engineering
Credit level (Normal year taken)SCQF Level 11 (Postgraduate) AvailabilityNot available to visiting students
SCQF Credits20 ECTS Credits10
SummaryProgramming is often the first thing we learn when we move into software development, but it is not the singular focus of a good software developer. As this course will cover, a good software developer must be able to produce code which, among other qualities, is well designed, maintainable, readable, and testable. Importantly, they must in addition to being able to write good code, they must be able to undertake and understand the other roles that are necessary to produce good software products. These roles can include but are not limited to project management, risk management, planning, requirement engineering, and system architecture. This course aims to cover the programming approaches that lead to good code and the processes which lead to the delivery of high-quality, efficient, robust, portable, usable software products. You will be introduced to areas of increasing prominence in both academia and industry including the importance of software sustainability and the use of agile methods.
Course description The course covers the following:
- Best practices for scientific computing.
- Introduction to operating systems, compilers and batch systems.
- Writing programs for people, programs that are readable, maintainable, and usable.
- Reviewing code to identify bugs and share expertise.
- Debugging using code browsers and debuggers.
- Managing versions and collaborating using revision control.
- Automating common tasks and building programs using a build tool.
- Automated regression and unit testing to help ensure and maintain program correctness.
- Profiling and performance analysis to identify and improve a program's use of processing and memory resources.
- Security, authentication and authorisation concepts.
- REST application programming interfaces.
- Open source software.

- Software Development Projects and Processes
- Development Models
- Project Approaches including Agile and PRINCE2
- Project Planning: Task Scheduling and Risks
- Design: Requirements Capture and Prioritisation, Interfaces, Code, System
- Software Testing
- Usability and Evaluation
- Project Teams and Communications
- Project Reviews

The course will be taught via a series of live lectures and tutorial lab sessions. Each week will normally have a single one hour lecture on a topic and a two hour tutorial/lab/discussion session where students will be expected to interact and contribute to the activities. The course will be supported by series of pre-recorded concept videos which will give the introduction to topics in the course, allowing students to focus on the details and questions during contact time. These pre-recorded videos will additionally provide case studies of projects carried out by EPCC staff.

The course will be assessed through three methods:

- The application of the course material to a group software development project
- Group presentation to present product of project
- Individual course reflection and code review

The group assignment will be carried out in three submissions over two semesters allowing each submission to concentrate on different skills and learning outcomes from the course.
Entry Requirements (not applicable to Visiting Students)
Pre-requisites Co-requisites
Prohibited Combinations Students MUST NOT also be taking The Human Factor: Working with Users (INFR11141) OR Software Development (INFR11172) OR Software Development (INFD11017) OR Software Design and Modelling (INFR10064) OR Standards Compliant Software Development (INFR11214) OR Programming Skills (INFR11177) OR Programming Skills (INFD11016) OR Software Testing (INFR10057) OR Python Programming (MATH11199) OR Computer Programming for Speech and Language Processing (LASC11096) OR Computer Programming for Speech and Language Processing (LASC11096)
Other requirements Only available for students on EPCC's on-campus MSc in HPC/HPC with Data Science students. External students are welcome to take are welcome to take Programming Skills and/or Software Development which contain much of the same material in 10-credit single-Semester courses.
Course Delivery Information
Academic year 2024/25, Not available to visiting students (SS1) Quota:  57
Course Start Full Year
Timetable Timetable
Learning and Teaching activities (Further Info) Total Hours: 200 ( Lecture Hours 21, Seminar/Tutorial Hours 37, Supervised Practical/Workshop/Studio Hours 6, Online Activities 4, Feedback/Feedforward Hours 6, Programme Level Learning and Teaching Hours 4, Directed Learning and Independent Learning Hours 122 )
Assessment (Further Info) Written Exam 0 %, Coursework 90 %, Practical Exam 10 %
Additional Information (Assessment) Formative Assessment (Semester 1, early):
Formative assessment will be a group performance analysis of a code artefact. The group will have to plan, perform and present the analysis of the code. Feedback will be provided on the following:

- Experimental Design and Documentation
- Data Visualisation
- Quality of Analysis
- Concept Understanding
- Quality of Presentation

Summative Assessment:
The groups will be given a project brief against which they must run a software project. This project will build upon the familiar code base from the formative assessment. The Assessment should be treated as a single overarching project with three 'milestones' on which feedback and an indicative grade will be provided:

1. Group Assessment - Submission 1 - 25% - Requirements, Design, Plan
2. Group Assessment - Submission 2 - 20% - Risk Review, CI/CD and Test Framework Deployments
3. Group Assessment - Submission 3 - 25% - Final Prototype, Usability and Performance Testing, Evaluation

The overall work will require the submission of a Peer Assessment form which will be used to affect the marks of the group members. This variation will nominally, at the Board of Examiners' discretion, be limited to +/- 20 marks on each assessment - subject to supporting evidence in the Peer Assessment form with penalties applied for non-completion of the peer assessment form or for any attempt to manipulate results using the form (e.g. insufficient explanation/evidence to support excessively high/low ratings).

Group Presentation - 10%. (Delivered Flexible Learning Week) -
The group assessment should present their project as a product - highlight the technical design and qualities of their work, highlight how the design matches the requirements of the project and what future plans for the product are.

Personal Coursework - 20%
The individual assignment be comprised of two elements (which may be submitted separately).
1. A personal reflection on the group project - this should include an assessment of the group performance and dynamics, the individual and their role in the assessment and the concepts and learning that they have undertaken during the process
2. Code Review - this should be a code module or file from the project which the individual should perform a code review of. This review should include adherence to code standards, functionality review, readability, testing and potential improvements or issues in the code.
Feedback In-class feedback, tutorials and lectures are intended to be interactive so there will be an on-going verbal dialogue with students that engage with the course.

For all assessments, students will have the opportunity to discuss in person or virtually with a member of the course team their feedback or questions.

Formative Assessment Feedback:
Written Group Feedback addressing strengths and weaknesses of analysis and conclusions
Verbal Cohort Feedback to address common strengths, weaknesses and concept misunderstanding

Weighted Group Assessments:
Written Group Feedback addressing strengths and weaknesses of specific elements, question-based feedback to encourage reflection on why an option or opinion or decision was taken.
Verbal Cohort Feedback to address cohort level strengths and weaknesses.

Presentation Assessment:
Written Group Feedback on the quality and content of the presentation and the relationship to the prior assessed materials.
Verbal Cohort Feedback to address cohort level strengths and weaknesses.

Individual Assessment:
Written feedback addressing the elements of reflection and code review. Question based feedback where items are unclear or the reasoning isn't apparent to provoke reflection in the student.
No Exam Information
Learning Outcomes
On completion of this course, the student will be able to:
  1. Describe, execute, and evaluate the processes required for software development.¿
  2. Produce, Refactor, Test and Evaluate usable and readable source code.¿
  3. Design, implement, analyse, and document qualitative and quantitative experiments on software.¿
  4. Identify, prioritise, and develop project management strategies for change management, risk management, resource management and communication.¿
  5. Evaluate and apply software development tools and techniques to development projects including version control, code analysis, profilers, continuous integration, and continuous deployment.
Reading List
Recommended:



Wilson G, Aruliah D.A., Brown C.T., Chue Hong N.P., Davis M., et al. 'Best Practices for Scientific Computing'. PLoS Biol 12(1): e1001745. doi:10.1371/journal.pbio.1001745.



Optional (More reading is available):



L. Wallace and M. Keil. Software Project Risk and their Effect on Outcomes, Communication of the ACM, vol 47 number 4, pp. 68-73, 2004

M. N. A. Khan, A. M. Mirza, and I. Saleem, Software Risk Analysis with the use of Classification Techniques: A Review Eng. Technol. Appl. Sci. Res., vol. 10, no. 3, pp. 5678-5682, Jun. 2020.

Razavian, Maryam et al., 2016. In two minds: how reflections influence software design thinking. Journal of software : evolution and process, 28(6), pp.394-426.

Suryanarayana, Girish, Samarthyam, Ganesh & Sharma, Tushar, 2014. Refactoring for Software Design Smells, San Francisco: Elsevier Science & Technology.

Sandve G.K., Nekrutenko A., Taylor J., Hovig E. 'Ten Simple Rules for Reproducible Computational Research'. PLoS Comput Biol 9(10): e1003285. doi:10.1371/journal.pcbi.1003285.

McConnell, S. 'Code Complete: A Practical Handbook of Software Construction' (2nd ed.), Microsoft Press, 19 Jun 2004. ISBN-10: 0735619670. ISBN-13: 978-0735619678.
Hunt, A. 'The Pragmatic Programmer', Addison Wesley, 20 Oct 1999. ISBN-10: 020161622X, ISBN-13: 978-0201616224.
Additional Information
Graduate Attributes and Skills Research and Enquiry: Problem solving; Analytical thinking; Independent research

Personal and Intellectual Autonomy: Creativity and inventive thinking; Decision making;

Personal Effectiveness: Planning, organising and time management; Team working; Change management

Communication: Verbal communication and presentation; Written communications; Influencing and negotiation skills
Special Arrangements Only available to students on EPCC's on-campus MSc programmes.
KeywordsSoftware development,planning,risk analysis,risk management,requirements,HPC,HPCwDS,Software
Contacts
Course organiserMr Alistair Grant
Tel: (0131 6)50 5028
Email: alistair.grant@ed.ac.uk
Course secretaryMr James Richards
Tel: 90131 6)51 3578
Email: J.Richards@epcc.ed.ac.uk
Navigation
Help & Information
Home
Introduction
Glossary
Search DPTs and Courses
Regulations
Regulations
Degree Programmes
Introduction
Browse DPTs
Courses
Introduction
Humanities and Social Science
Science and Engineering
Medicine and Veterinary Medicine
Other Information
Combined Course Timetable
Prospectuses
Important Information