Postgraduate Course: Programming Skills (EPCC11017)
Course Outline
School | School of Informatics |
College | College of Science and Engineering |
Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) |
Availability | Available to all students |
SCQF Credits | 10 |
ECTS Credits | 5 |
Summary | This course is designed to help you to produce higher quality code; code that is readable, maintainable, usable, correct and efficient in less time and with less effort. These programming skills are applicable to programs in any language and the course is illustrated with examples from C, Python, Fortran 90, and Java.
Areas of specific relevance to parallel high-performance computing, including the use of batch systems, scientific libraries, profilers, and performance analysis, are also covered.
Please note this is not a 'Programming 101' course. It is designed for those with experience of programming to hone and improve their practice. |
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.
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | None |
Information for Visiting Students
Pre-requisites | You MUST have experience in one of the following programming languages: C, C++, Python, FORTRAN, Java, R.
You MUST have experience of writing a program of 100 lines or more.
You MUST have experience of writing programs which include conditional blocks, loops, and defining functions, methods, subroutines or procedures.
A knowledge of bash shell is highly recommended. |
High Demand Course? |
Yes |
Course Delivery Information
|
Academic year 2024/25, Available to all students (SV1)
|
Quota: 50 |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 9,
Supervised Practical/Workshop/Studio Hours 18,
Feedback/Feedforward Hours 1,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
70 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
100% Coursework
This is a practical course. There will be one formative submission and one summative submission. |
Feedback |
Provided on assessed work and through practical sessions |
No Exam Information |
|
Academic year 2024/25, Available to all students (SV1)
|
Quota: 50 |
Course Start |
Semester 2 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 9,
Supervised Practical/Workshop/Studio Hours 18,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
71 )
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
100% Coursework
This is a practical course. There will be one formative submission and one summative submission. |
Feedback |
Provided on assessed work and through practical sessions |
No Exam Information |
Learning Outcomes
On completion of this course, the student will be able to:
- Understand how to build, run and develop software in a Linux/Unix environment.
- Evaluate, and write, readable source code.
- Analyse code and create unit and regression tests.
- Design, implement, analyse and write-up software performance experiments.
- Evaluate and apply software development tools including version control systems, code browsers, automated test frameworks and profilers.
|
Reading List
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.
Wilson, G., Bryan, J., Cranston, K., Kitzes, J., Nederbragt, L. and Teal, T. 'Good enough practices in scientific computing'. PLoS Comput Biol 13(6): e1005510. doi:10.1371/journal.pcbi.1005510.
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.
Barnes, N. and Jones, D. 'Clear Climate Code: Rewriting Legacy Science Software for Clarity'. IEEE Software 28(6), pp36-42, Nov-Dec 2011. doi:10.1109/MS.2011.113.
Bailey, D.H. 'Twelve Ways to Fool the Masses When Giving Performance Results on Parallel Computers', Supercomputing Review August 1991, pp54-55. Author copy: http://crd-legacy.lbl.gov/~dhbailey/dhbpapers/twelve-ways.pdf.
Bailey, D.H. 'Misleading performance in the supercomputing field', Supercomputing '92 Proceedings of the 1992 ACM/IEEE conference on Supercomputing, pp155-158, November 1992. doi:10.1109/SUPERC.1992.236699.
The following text books are not essential, but one or the other is recommended, if pursuing a career in software development:
McConnell, S. 'Code Complete: A Practical Handbook of Software Construction' (2nd ed.), Microsoft Press, 19 Jun 2004. ISBN-10: 0735619670. ISBN-13: 978-0735619678. Either this or The Pragmatic Programmer below is a good programming best practice book.
Hunt, A. 'The Pragmatic Programmer', Addison Wesley, 20 Oct 1999. ISBN-10: 020161622X, ISBN-13: 978-0201616224. Either this or Code Complete above is a good programming best practice book.
Additional links to other recommended papers, blog posts, articles and online resources are provided. |
Additional Information
Graduate Attributes and Skills |
Project Management
Organisation
Integration of knowledge
Solution exploration, evaluation, and prioritisation
Programming
Critical Analysis
Scientific/Academic Writing
Ability to analyse and interpret results
Written Communication |
Keywords | Programming,PS,EPCC,Fortran,C,C++,Python,Java,Debugging,Software |
Contacts
Course organiser | Dr Steven Carlysle-Davies
Tel: (0131 6)51 3542
Email: S.Carlysle-Davies@epcc.ed.ac.uk |
Course secretary | Mr James Richards
Tel: 90131 6)51 3578
Email: J.Richards@epcc.ed.ac.uk |
|
|