Undergraduate Course: Scientific Computing Skills (EASC11005)
|School||School of Geosciences
||College||College of Science and Engineering
|Credit level (Normal year taken)||SCQF Level 11 (Year 5 Undergraduate)
||Availability||Not available to visiting students
|Summary||MEarthPhys students undertake a major 5th year project in Geophysics and/or meteorology, spread over two semesters. These projects can be drawn from a diverse range (reflecting staff research interests). Many involve interfacing with existing software for analysing data, using a variety of programming languages. Building on such existing software is often essential to meaningful progress in the research project. No programming language has been identified as a standard that all students can be taught and that would serve for all potential projects. Furthermore, the only language that students have been taught so far is an interpreted data-analysis language. A professional scientist should also have been exposed to traditional compiled languages (C, Fortran etc.) and should understand some of the differences between the two types of language. Some, but not all, students will therefore be faced with a significant need to gain skills in programming as well as learning the geophysics/meteorology relevant to their project. This course is intended to ensure due credit is available to students for achieving that up-skilling in scientific computing, while allowing all project work to be assessed on a common basis (i.e., assuming no limitations arising from difficulty in acquiring computing skills). Students will thus take this course as a means of gaining the scientific computing skills that are necessary to the performance of their level 11 research project, i.e., they will follow an individually agreed approach to learning the programming language necessary for their project. The approach to learning could include auditing or taking courses within the University where relevant and available (in which case credits would not be double counted). More commonly, a number of reasonably demanding tasks will be devised requiring data reading, data manipulation and programming of mathematical operations. Each student will develop code in both a compiled language and a data-analysis language in order to achieve their agreed tasks in their particular programming environments, the scale of the tasks being intended to require ~200 hours of effort. Where the student's project does not require both a compiled and a data-analysis language, the languages to be used will be selected by the CO. As well as providing students with scientific computing experience explicitly on their transcript, the student experience should be enhanced in that students will not be dissuaded from choosing projects requiring mature computing skills.
Note that this schedule is for illustrative purposes only. Material covered will vary from year to year depending on what students know already, the requirements of the students for their research project, the availability of IS-provided training courses etc.
Week 1: The nature of computing. What is a computer, and how does it work? Data formats. ASCII text vs raw binary vs self-describing binary (HDF, NetCDF etc). Formative exercise handed out.
Week 2: Languages. Compiled vs interpreted. Getting started with a compiled language. First assessed exercise handed out.
Week 3: No class: instructor on 4th-year geophysics field course
Week 4: Presentation of data. Caption vs legend. Colour scales etc. Deadline for formative feedback exercise. Second assessed exercise handed out.
Week 5: More on Languages. Styles: procedural vs functional vs object-oriented. Documenting of code. It isn't just the comments. How good structure leads to readability.
Week 6: Packaging of code. What to do with a source tar file. How to make one. How code is packaged up in the languages of choice (e.g. R packages)
Week 7: University-run Fortran 95 course. (Unfortunately in 2018-19 this course ran in December --- too late for our purposes.)
Week 8: Graphics formats, and how to hack them. Images vs vector graphics. How to avoid your figures getting in a mess once they are in a document.
Deadline for first assessed exercise.
Week 9: Other stuff we do with computers (GIS?)
Week 10: Held in reserve
Week 11: Deadline for second assessed exercise.
Course Delivery Information
|Not being delivered|
On completion of this course, the student will be able to:
- Understand the difference between a compiled language and an interpreted language and to appreciate which class of languages is suited to which sorts of problems
- Achieve tasks involving data handling, mathematical manipulation, and data visualisation, in one of Matlab, IDL, Python/numpy/matplotlib, R, PerlDL (or another interpreted data-analysis language).
- Achieve tasks involving numerical analysis/modelling in one of C, Fortran, Java or another compiled language.
- Use strategies for structuring and testing scientific computing code.
- Write code which is appropriately commented and documented.
|Graduate Attributes and Skills
|Keywords||Programming. Data analysis.
|Course organiser||Dr Hugh Pumphrey
Tel: (0131 6)50 6026
|Course secretary||Ms Katerina Sykioti
Tel: (0131 6)50 5430