Postgraduate Course: Programming Skills (PGPH11079)
Course Outline
School | School of Physics and Astronomy |
College | College of Science and Engineering |
Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) |
Availability | Not available to visiting students |
SCQF Credits | 10 |
ECTS Credits | 5 |
Summary | It is one thing to write a program. It is another to write a modular, robust, reliable, maintainable program upon which others can depend, and to be able to write it efficiently. This course provides you with practical experience of tools and techniques which will help you to become a more effective programmer, to do more, to a higher degree of quality in less time and with less effort. These fundamentals of good programming are applicable to any programming language. Examples are highlighted using C, Java, Fortran 90 and Python to see how good practice applies to contrasting languages. Areas of specific relevance to HPC programming, including the use of batch systems, scientific libraries, profilers and performance analysis, are also covered.
The course covers the following topics:
1.Useful Linux/Unix tools for programmers - editors, file and process managers, shell scripting.
2.How programs run - fundamentals of operating systems and compilers.
3.What makes a good program - choosing a language, strengths and weaknesses of C, Fortran 90 and Java, good design, layout and commenting.
4.Writing code using an editor versus using an integrated development environment.
5.Tracking down and fixing bugs using code browsers and debuggers.
6.Using source code repositories to save everything you write and to collaborate within a team.
7.Using unit tests to the ensure correctness, robustness and scalability of your code.
8.Using build tools to manage multi-file programs and save time.
9.Profiling your code to measure performance and resource usage.
10.Running scientific codes as experiments.
11.Using scientific libraries.
Lectures are followed by tutored practical sessions illustrating the key concepts.
|
Course description |
Not entered
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | You must have experience in a programming language e.g. C, C++, FORTRAN, Java or Python, and be familiar with programming concepts including conditionals, loops, arrays and functions. |
Course Delivery Information
|
Academic year 2015/16, Not available to visiting students (SS1)
|
Quota: 40 |
Course Start |
Semester 1 |
Timetable |
Timetable |
Learning and Teaching activities (Further Info) |
Total Hours:
100
(
Lecture Hours 22,
Seminar/Tutorial Hours 11,
Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
65 )
|
Additional Information (Learning and Teaching) |
Please contact the School for further information
|
Assessment (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
Additional Information (Assessment) |
100% group-based coursework |
Feedback |
Not entered |
No Exam Information |
Learning Outcomes
On completion of this course, the student will be able to:
- On completion of this course you should be able to:
1. Develop code in a Linux/Unix environment and understand the stages involved.
2. Write code that is readable, understandable and maintainable.
3. Write a modular program with code in multiple files and which calls external libraries and understand why this should be done
4. Use the make and ANT build tools to build multi-file programs.
5. Use Subversion and Git to manage source code within a single repository.
6. Write codes using a defensive style of programming to minimise bugs.
7. Test and debug programs using a systematic and methodical approach.
8. Understand the importance of performance and Amdahl's law.
9. Undertake performance measurement and analysis of your codes.
10. Collect "experimental" data from simulation codes.
|
Additional Information
Graduate Attributes and Skills |
Not entered |
Keywords | PS (S1) |
Contacts
Course organiser | Dr Michael Jackson
Tel:
Email: |
Course secretary | Yuhua Lei
Tel: (0131 6) 517067
Email: |
|
© Copyright 2015 The University of Edinburgh - 27 July 2015 11:47 am
|