XX10190: Programming and discrete mathematics
Academic Year:  2019/0 
Owning Department/School:  Department of Mathematical Sciences 
Credits:  12 [equivalent to 24 CATS credits] 
Notional Study Hours:  240 
Level:  Certificate (FHEQ level 4) 
Period: 

Assessment Summary:  CW 50%, EX 20%, EXTH 30%* 
Assessment Detail: 
*Assessment updated due to Covid19 disruptions 
Supplementary Assessment: 

Requisites:  You must have A Level Mathematics grade A or equivalent in order to take this unit. 
Description:  Aims: To teach generic programming skills and a range of topics in discrete mathematics which are connected to computation. Learning Outcomes: After taking this unit, the student should be able to: * Apply the basic principles of programming in studying problems in discrete mathematics. * Make proper use of data structures in the applications context. * Demonstrate understanding of a range of mathematical topics which relate to computation, such as modular arithmetic, elementary graph theory and elementary computational number theory and their applications. * Analyse the complexity of simple algorithms * Explain the use of some famous algorithms such as the Fast Fourier Transform. * Use the MATLAB programming environment. Skills: Numeracy T/F A Problem Solving T/F A Information Technology T/F A Content: The role of computing in mathematics Matlab programming environment: Editing, importing and exporting data, getting help, functionality, graphics and mathematical applications. Control structures for programming: Pseudocode, selection statements, repetition statements. Elementary logic in programming. Elementary mathematical applications: e.g. summing series. Data types: integers, real and complex numbers. Binary representation. Arrays, userdefined data structures. Procedures, types of variables, parameter passing, scope of functions, functions as arguments. Applications, e.g. to modular arithmetic. Graphs, trees, sorting and searching: applications. Complexity of algorithms, order of an algorithm, examples of algorithms with logarithmic, polynomial and exponential order. Proofs by induction. Recursion and its relation to induction. Mathematical applications of recursion, e.g. Pascal's triangle, Euclid's algorithm, computing fractals. Matrices and matrix operations. Applications, e.g. Fibonacci numbers, modelling networks. Objectoriented programming. The object oriented paradigm, defining classes in Matlab, encapsulation. Examples from graphics. Software development. The difficulty of formal proof, and the importance of testing. "black box" versus "white box" testing. Test coverage, and its importance in Matlab. Cryptography, RSA. Error correcting codes. Digital signal processing and FFT. 
Programme availability: 
XX10190 is Compulsory on the following programmes:Department of Mathematical Sciences

Notes:
