CM1103 Problem Solving with Python - Cardiff School of Computer ...
CM1103 Problem Solving with Python - Cardiff School of Computer ...
CM1103 Problem Solving with Python - Cardiff School of Computer ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Problem</strong> <strong>Solving</strong> <strong>with</strong> <strong>Python</strong><br />
This module will provide students <strong>with</strong> the fundamental programming and problem solving<br />
skills necessary to continue study in Business Information Systems, <strong>Computer</strong> Science and<br />
S<strong>of</strong>tware Engineering. The delivery <strong>of</strong> the module will be case study based, motivated by a<br />
study <strong>of</strong> a number <strong>of</strong> classical and topical real-world problems. Through these, the module<br />
will introduce the mathematical theory necessary to model problems and the programming<br />
skills necessary to implement efficient solutions.<br />
On completion <strong>of</strong> the Module a student will be able to:<br />
<strong>School</strong><br />
COMSC<br />
Module Code<br />
<strong>CM1103</strong><br />
External Subject Code I320<br />
Number <strong>of</strong> Credits 20<br />
Level 1<br />
Module Leader<br />
Dr. Stuart Allen<br />
Module <strong>of</strong>fered on a freestanding<br />
No<br />
basis<br />
Maximum Number on Module 150<br />
Language <strong>of</strong> Module delivery<br />
English<br />
1. Use <strong>Python</strong> and common modules to implement simple algorithms expressed in pseudocode<br />
2. Divide programs into subtasks by the appropriate definition <strong>of</strong> functions and/or modules<br />
3. Develop informal algorithms to solve simple problems<br />
4. Analyse the efficiency <strong>of</strong> algorithms using O-notation and contrast different searching algorithms<br />
5. Use recursion appropriately to solve problems<br />
6. Understand and apply basic set theory, counting techniques, graph theory, probability and statistics<br />
How the Module will be delivered<br />
Programming and problem solving skills are best developed through practice, hence students should expect to spend 5 hours per week programming<br />
at the computer. As such, the weekly programming labs are an integral part <strong>of</strong> the learning experience. Students will maintain logbooks <strong>of</strong> the work<br />
completed in these sessions, and their progress will form a significant part <strong>of</strong> the assessment for this module.<br />
Overview lecture followed by:<br />
o 5 two-hour in-lab instruction sessions, consisting <strong>of</strong> lectures covering <strong>Python</strong> programming supported by exercises.<br />
o 28 lectures on algorithms and discrete mathematical structures <strong>with</strong> 5 tutorials covering mathematical theory.<br />
o 7 weekly revision lectures and in-lab surgeries.<br />
Skills that will be practised and developed
Programming in <strong>Python</strong><br />
<strong>Problem</strong> <strong>Solving</strong><br />
How the Module will be assessed<br />
Assessments are listed below indicating relation to learning outcome. No academic or competence standards limit the availability <strong>of</strong> adjustments or<br />
alternative assessments for disabled students.<br />
Type <strong>of</strong> assessment %<br />
Contribution<br />
Title<br />
Learning<br />
Outcomes<br />
Approx. date <strong>of</strong><br />
Assessment<br />
Continual assessment 20 “In-lab” <strong>Python</strong> implementation skills 1, 2, 5 Weeks 5-9<br />
Continual assessment 10 Mathematical skills through lab book 6 Weeks 6-10<br />
Coursework 20 <strong>Problem</strong> solving exercise 1, 2, 3 Weeks 9-11<br />
Examination (2 hours) 50 Examination 3, 4, 5, 6 Autumn Exam<br />
Weeks<br />
The potential for reassessment in this Module<br />
Reassessment will take the form <strong>of</strong> an examination during the summer period.<br />
Syllabus content<br />
Fundamental programming concepts in <strong>Python</strong><br />
- Representing data: booleans, numbers, strings, lists & tuples, functions & classes, sets<br />
- Defining functions and modules<br />
- Program control – loops and branching<br />
- Input and output<br />
- Useful <strong>Python</strong> modules<br />
Algorithms, including:<br />
- Searching and sorting: Linear search, Binary search, Selection sort, Regular expressions<br />
- Fisher-Yates shuffle<br />
- Recursion<br />
- Efficiency and Big O notation
Mathematics<br />
- Numerical skills<br />
- Basic set theory<br />
- Basic statistics and probability<br />
- Permutations, combinations and graphs<br />
Indicative Reading and Resource List:<br />
Think <strong>Python</strong>! http://www.greenteapress.com/thinkpython/thinkpython.html