Skip to main content Skip to navigation

WM908-15 Programming and Fundamental Algorithms

Department
WMG
Level
Taught Postgraduate Level
Module leader
Kurt Debattista
Credit value
15
Module duration
4 weeks
Assessment
100% coursework
Study location
University of Warwick main campus, Coventry

Introductory description

Current progress in information technology has meant the majority of organisations are using IT to innovate, and without an understanding of fundamental computing concepts future managers, scientists, engineers will be unable to take strategical decisions and provide critical thinking on most projects in full confidence.

The module is focused around two core themes in computing: algorithms and programming/development. These two concepts go hand in hand and it is understood that to be a good developer, algorithmic concepts need to be comprehensively understood and students should be able to critical apply knowledge from the theoretical aspects towards practical implementations of solutions for complex system designs in business, engineering, science and IT.

The programming focus is based on a high level programming language such as the C/C++ programming language and/or python, considered by many as one of the more useful programming languages and still the language of choice in many industries – once mastered the transition to the other popular programming languages Java, C-sharp, Objective C can be relatively straightforward. Importantly, this is not about teaching programming but about forming a conceptual understanding of computing principles with programming as a vehicle to further grasp these concepts with the added bonus of adding an important skill to the CV. Future editions may adopt other programming languages.

Module aims

The over-arching aim of this module is to give students the ability and confidence to solve problems efficiently using computers. The sub-aims of this module are:

  • Form an understanding of some classic algorithms from the literature
  • Develop the understanding of which solutions/algorithmic paradigms work best for certain types of problems
  • Design straightforward algorithms for yet unseen problems that have straightforward solutions
  • Learn programming methods and how to design good code for a proposed algorithm

Outline syllabus

This is an indicative module outline only to give an indication of the sort of topics that may be covered. Actual sessions held may differ.

Introduction Sorting as an introduction to algorithms
Data structures
Complexity and decision making
Brute force and divide and conquer methods for solving problems
Dynamic programming and greedy methods
Exhaustive search and recursion
Advanced Data structures
Misc. algorithms (eg string matching, spatial data structures etc.) as part of in-class tutorials, introduced throughout the module.
Limitations of algorithms and coping with limitations
Conclusions, recap and next steps

Tutorials
Introduction to programming
Introduction to Types and Commands
Dealing with pointers
Generics and abstract data types
Concepts of Object Oriented Programming Inheritance, Polymorphism
File I/O
Standard Template Library
Modern C++

Learning outcomes

By the end of the module, students should be able to:

  • Master a sound, conceptual understanding of the theory and concepts of programming and fundamental algorithms and data structures. [AHEP:4, M5,M4] [CITP 3.1.1]
  • Program effectively and independently in a high-level programming language at an intermediate to advanced level. [AHEP:4, M13] [CITP2.2.1]
  • Take, straightforward to complex, algorithmic concepts, and implement them correctly. [AHEP:4, M2,M4] [CITP2.2.4]
  • Autonomously distinguish the right solution for a given problem from amongst a set of algorithmic and programming tools. [AHEP:4, M3] [CITP3.2.2]

Research element

Many research students have attended the 10 CATS version of this course before (and particularly in its previous incarnation as CY903) - it forms a sold foundation for students working in the mathematical sciences to learn how to program and run code. Many of the in class examples are, usually, simulation based.

Interdisciplinary

The examples shown in terms of programming will cover a number of areas around science and engineering, broadly falling in the mathematical sciences domain.

Subject specific skills

Mathematical skills, programming skills

Transferable skills

Technology literacy, adaptability

Study time

Type Required
Lectures 15 sessions of 1 hour (10%)
Seminars (0%)
Tutorials 15 sessions of 1 hour (10%)
Online learning (independent) 11 sessions of 1 hour (7%)
Other activity 29 hours (19%)
Private study 20 hours (13%)
Assessment 60 hours (40%)
Total 150 hours

Private study description

Private stude will involve the understanding of progaramming concepts and algorithms.

Other activity description

29 hours of student self directed study. Guidance on self directed study will be provided in class.

Costs

No further costs have been identified for this module.

You must pass all assessment components to pass the module.

Assessment group A3
Weighting Study time Eligible for self-certification
Assessment component
Games Programming Assignment 100% 60 hours Yes (extension)

This is the module assignment. It is an original programming application with a brief report outlining motivation and solutions.

Reassessment component is the same
Feedback on assessment

The assignment will be marked and feedback provided. Feedback will also be provided in class via the tutor demonstrating a solution to similar problems.

Post-requisite modules

If you pass this module, you can take:

  • WM9M2-15 Computer Graphics

Courses

This module is Core for:

  • Year 1 of TWMS-H1SK Postgraduate Taught Games Engineering (Full-Time)

This module is Core optional for:

  • Year 1 of TWMS-H1SE Postgraduate Taught Smart, Connected and Autonomous Vehicles (Full-time)

This module is Optional for:

  • Year 1 of TWMS-H1SH Postgraduate Taught Cyber Security Management (Full-time)
  • EWMS-H1U2 Postgraduate Taught Engineering Competence (Smart, Connected and Autonomous Vehicles) (Degree Apprenticeship)
    • Year 1 of H1U2 Engineering Competence (Smart, Connected and Autonomous Vehicles) (PGDip) (DA)
    • Year 1 of H1TE Smart, Connected and Autonomous Vehicles (Part-time)
    • Year 1 of H1TE Smart, Connected and Autonomous Vehicles (Part-time)
  • Year 1 of TWMS-H1TE Postgraduate Taught Smart, Connected and Autonomous Vehicles (Part-time)