35383 Programming for Mathematical Modelling and Data Analysis
Warning: The information on this page is indicative. The subject outline for a
particular session, location and mode of offering is the authoritative source
of all information about the subject for that offering. Required texts, recommended texts and references in particular are likely to change. Students will be provided with a subject outline once they enrol in the subject.
Subject handbook information prior to 2021 is available in the Archives.
Credit points: 6 cp
Result type: Grade and marks
Requisite(s): ((31267 Programming Fundamentals OR 48023 Programming Fundamentals) AND 35212 Computational Linear Algebra)
Description
The goal of this subject is to introduce students to data structures and programming techniques that can be used to collect, manipulate, model and analyse a broad range of datasets, including datasets with missing values. It uses the Python programming language to learn how to work with numerical, string, and more complex data format, and to perform basic mathematical modelling or statistical analyses based on the data. The subject places a strong emphasis on developing a clear understanding of the common features of data structures from diverse areas, which may include nonlinear dynamics, discrete optimisation, mathematical physics, statistics, computational biology, or stochastic processes. Students develop practical skills in problem solving by working on a real-world data analysis project of their choosing, using publicly available datasets.
Subject learning objectives (SLOs)
Upon successful completion of this subject students should be able to:
1. | Demonstrate basic Python coding skills for the management, manipulation, analysis, and visualisation of a broad variety of data formats. |
---|---|
2. | Demonstrate familiarity with the concept of reproducible research. |
3. | Design a suitable programming workflow to analyse data from a variety of problems including ones not seen previously. |
4. | Use the Python standard library, and find information relating to any Python modules, and use that information to write code. |
5. | Translate a simple algorithm into a Python code. |
6. | Synthetise data analysis results and communicate the findings effectively. |
7. | Perform exploratory data analysis using Python. |
8. | Use online resources to improve his or her knowledge of the language. |
9. | Demonstrate a knowledge of the common data types in Python. |
Contribution to the development of graduate attributes
The Faculty of Science has determined that its courses will aim to develop the following attributes in students at the completion of their course of study. Each subject will contribute to the development of these attributes in ways appropriate to the subject and the stage of progression, thus not all attributes are expected to be addressed in all subjects.
- Disciplinary knowledge and its appropriate application
- An inquiry-oriented approach
- Professional skills and their appropriate application
- The ability to be a lifelong learner
- Engagement with the needs of society
- Communication skills
- Initiative and innovative ability
This subject contributes to the development of the following graduate attributes:
1. Disciplinary knowledge and its appropriate application
The computing work integrated in the subject, and assessed in assessment 1, develop the skills necessary to write Python code to analyse a broad range of data types, and demonstrate how to apply these skills to a variety of problems.
2. An Inquiry-oriented approach
The second assignment involves the research, processing and analysis of a dataset to investigate a specific topic. Students are encouraged to identify a problem that is of interest to them and find a relevant, publically accessible dataset. They will then determine the most effective way to analyse the data in order to gain new insight into the problem.
3. Professional skills and their appropriate application
This subject helps students learn to manage their own work and to accept responsibility for their own learning. It also introduces students to the concept of reproducible research which is becoming an essential aspect of any quantitative discipline. For the project component they will need to manage their time and meet deadlines. Ethical understanding of the importance of privacy and licensing issues in relation to datasets is emphasised, and critical thinking is developed.
6. Communication skills
Presentation of written solutions to problems using appropriate professional language is emphasised by assessments 1 and 2. In particular, one of the goals of the project assignment is to assess the student’s ability to take low-level information (raw dataset) and transform it, through careful analysis, into useful information that can be communicated effectively to non-experts. Oral communication skills are assessed in component 3 of the assessment.
7. Initiative and innovative ability
The project assignment allows for the demonstration of initiative by requiring that the student identifies a problem of interest, locates the relevant data, and processes it to gain new insights (i.e., extract information not immediately obvious in the raw data) into the problem.
Teaching and learning strategies
The emphasis of this subject is on real-world application. The goal is to get the students to work on realistic datasets very quickly. The elegance of the language and the availability of sophisticated libraries are what make Python the ideal programming language for this task. Since programming skills are best acquired, and refined by programming, all teaching activities in this subject will be conducted in a computer lab. This allows students to test and implement programming concept as soon as the lecturer introduces them. Because programming skills are honed by coding, this subject requires a significant amount of personal work and reading, and students are expected to attend and participate in all the teaching activities.
We will be using the IPython Notebook throughout the subject because it provides the student with an immediate feedback on their code during the teaching activities. The notebook also constitutes an ideal framework within which the programming, analysis and reporting components of the project assessment can be blended together. This will encourage the student to reflect on their work and on how to best communicate their findings to a broad audience, including both experts and non-experts.
Content (topics)
Introduction to Python programming and the IPython notebook; basic syntax, data types and control structures; functions; input and output operations; arrays and array operations; dataframes and dataframe operations; NumPy and SciPy; data visualisation; mathematical modelling using Python.
A weekly schedule will be distributed separately.
Assessment
Assessment task 1: Class Tests
Objective(s): | This assessment task contributes to the development of course intended learning outcome(s): .0, .1, .2, .2, .2 and .2 |
---|---|
Weight: | 65% |
Criteria: | Use of appropriate programming techniques. Correctness of the results. |
Assessment task 2: Project
Objective(s): | This assessment task contributes to the development of course intended learning outcome(s): .0, .0, .0, .1, .1, .1, .1, .2, .2, .2 and .3 |
---|---|
Weight: | 30% |
Criteria: | Code must parse without error (otherwise a zero mark will be given for the project component). Other Information: Any late submissions for this task will incur a 20% mark penalty per day late |
Assessment task 3: Oral Presentation
Objective(s): | This assessment task contributes to the development of course intended learning outcome(s): .0 and .0 |
---|---|
Weight: | 5% |
Criteria: | Content and appropriateness of presentation for audience. Clarity of the presentation. |
Minimum requirements
The final mark will be a combination of marks for all components of the assessment.
Students must gain a combined mark of greater than 50% to pass the subject.
For component 2 (project), any late submissions will incur a 20% mark penalty per day late.
Required texts
Wes McKinney, “Python for Data Analysis. Agile Tools for Real World Data”, O'Reilly Media
(2012).
Note that the eBook version is available for purchase directly from the publisher (http://oreilly.com/).
Other resources
Allen B. Downey, “Think Python”.
Thanks to the author’s generosity an electronic version of this book is available for free at http://www.greenteapress.com/thinkpython/
See the website for details.
Charles Severance, “Python for Informatics”.
Thanks to the author’s generosity an electronic version of this book is available for free at
http://www.pythonlearn.com/book.php
See the website for details.