COURSE SYLLABUS
Mathematics for Software Engineers, 6 credits
Matematik för mjukvaruutveckling, 6 högskolepoäng
Course Code: TMMK16
Confirmed by: Dean Feb 9, 2015
Revised by: Director of Education Nov 29, 2016
Valid From: Jan 1, 2017
Version: 2
Reg number:JTH 2016/4552-313
Education Cycle: First-cycle level
Disciplinary domain: Technology (95%) and social sciences (5%)
Subject group: MA1
Specialised in: G1F

Intended Learning Outcomes (ILO)

After completing the course, the student shall

Knowledge and understanding

- be familiar with different approaches from Discrete Mathematics applicable to problems in computer science and software engineering
- display knowledge of some standard algorithms based on the above mentioned branches of Mathematics
- demonstrate comprehension of chosen specific techniques illustrative for a wider class of applications.

Skills and abilities

- demonstrate skills of transforming of a real world problem into formal description using the terms specific to corresponding branch of Mathematics
- demonstrate ability to find out particularities of corresponding theory and its application and then rapidly produce a proof-of-concept implementation of the solution in a scripting language
- demonstrate skills to use matehmatics in scientific work through the evaluation of alternative solutions to a problem using experimentation and other scientific methods.

Judgement and approach

- demonstrate ability to identify a real world problem to be treatable within the framework of some, possibly adapted/modified, known method or algorithm of the ones studied in this course;
- demonstrate understanding of the complexity and scaling properties of the algorithm implementation.

Contents

The course investigates mathematical concepts of direct relevance to programming and the construction of software systems. The course focuses on the use of mathematics as a tool for formalising and solving problems in programming and software engineering. Furthermore, the course makes use of scripting languages to implement proof-of-concept solutions to problems as well as other tools such as spreadsheets. The course also provides students with the confidence to approach mathematicians for support in addressing more complex software engineering challenges.

The course includes the following topics:
- Discrete mathematics (including abstract algebra, graph theory and the Z-transform)
- Generating functions and the use of recursive techniques
- Algorithm complexity and the effect on code performance
- Automata, formal machines and the programming of state-based behaviour
- Elements of coding theory
- The mathematical basis for encryption and cryptology
- Optimization techniques (including for example linear programming, dynamic programming or optimization in networks)

Type of instruction

The course will consist of lectures, seminars, exercises and practical work.

The teaching is conducted in English.

Prerequisites

General entry requirements and completed course Discrete Mathematics, 6 credits (or the equivalent).

Examination and grades

The course is graded 5,4,3 or Fail.

The final grade for the course is based upon a balanced set of assessments. The final grade will only be issued after satisfactory completion of all assessments.

Registration of examination:
Name of the TestValueGrading
Examination3 credits5/4/3/U
Laboratory work and project work3 credits5/4/3/U

Other information

Exemption from entry requirement allowed according to the selection groups of the program, where the course is included.

Course literature

The literature list for the course will be provided one month before the course starts.
Main textbook:
Title: Discrete and Combinatorial Mathematics: An applied Introduction
Author: Ralph P Grimaldi.
Publisher: Pearson, 2003.

Additional literature:
Title: Introduction to Computation and Programming Using Python
Author: John V Guttag,
Publisher: MIT Press, 2013.