01.02.2015 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!