Postgraduate Course: Programming Skills (PGPH11079)
Course Outline
School | School of Physics and Astronomy |
College | College of Science and Engineering |
Course type | Standard |
Availability | Not available to visiting students |
Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) |
Credits | 10 |
Home subject area | Postgraduate (School of Physics and Astronomy) |
Other subject area | None |
Course website |
None |
Taught in Gaelic? | No |
Course description | 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.
|
Entry Requirements (not applicable to Visiting Students)
Pre-requisites |
|
Co-requisites | |
Prohibited Combinations | |
Other requirements | None |
Additional Costs | None |
Course Delivery Information
|
Delivery period: 2013/14 Semester 1, Not available to visiting students (SS1)
|
Learn enabled: Yes |
Quota: 40 |
Web Timetable |
Web Timetable |
Course Start Date |
16/09/2013 |
Breakdown of 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 Notes |
Please contact the School for further information
|
Breakdown of Assessment Methods (Further Info) |
Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
|
No Exam Information |
Summary of Intended Learning Outcomes
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.
|
Assessment Information
100% group-based coursework |
Special Arrangements
None |
Additional Information
Academic description |
Not entered |
Syllabus |
Not entered |
Transferable skills |
Not entered |
Reading list |
Not entered |
Study Abroad |
Not entered |
Study Pattern |
Not entered |
Keywords | PS (S1) |
Contacts
Course organiser | Dr Michael Jackson
Tel:
Email: Mike.Jackson@ed.ac.uk |
Course secretary | Yuhua Lei
Tel: (0131 6) 517067
Email: yuhua.lei@ed.ac.uk |
|
© Copyright 2013 The University of Edinburgh - 10 October 2013 5:06 am
|