Teaching Responsibility

LJMU Schools involved in Delivery:

Computer Science and Mathematics

Learning Methods

Workshop

Module Offerings

4208COMP-SEP-CTY

Aims

To gain experience with IDE tools used to develop, compile, debug and test code using an appropriate high-level programming language. To develop problem solving and programming skills to enable the student to design solutions to non-trivial problems and implement those solutions in a high-level language. To relate software engineering and fundamental programming skills to computer games development. To build a foundation for more advanced programming techniques, including object-oriented design and programming and the use of standard data structures and algorithms.

Learning Outcomes

1.
Build simple data models via primitive types and arithmetically/logical manipulate data to solve a specific simple programming task.
2.
Utilise the fundamental language-level control structures to control program flow.
3.
Evaluate and select appropriate data structures and algorithms from the standard libraries of a high-level language and apply them in order to solving common programming problems.
4.
Use software engineering design techniques to decompose an application specification into a set of data models and algorithmic operations.
5.
Compose user-defined structures and functions to model real-world data and simple algorithmic processes.

Module Content

Outline Syllabus:Type Theory: - Binary encoding (numeric data representation, single and double floating point). - Representation of non-numeric data (character codes, graphical pattern). - Variables and primitive data types (numbers, characters, Booleans). - Compound types built from other types (strings, static arrays, functions, references, pointers). - Advanced Datatype using structures. - Goals and limitations of static typing. Language and Program-Level Constructs: - Basic syntax and semantics of a higher-level language. (syntax vs. semantics). - Declaration, expressions and assignments. - Decision structure and Logical connectives. - Simple Input/Output including file streaming. - Conditional and iterative control structures. - Functions and parameter passing. - References and Pointers. - Strategies for choosing the appropriate data structure. - Simple numerical algorithms (average, min, max over an array). - Programming using library components and language-level APIs. Software Development Fundamentals: - The concept of a specification. - System design principles. - Testing fundamentals and test-case generation. - Simple refactoring. - Modern programming environments. - Debugging strategies. - Program comprehension. - Program correctness. - Types of errors (syntax, logic, run-time). - Eliminating some classes of errors without running the program. - Documentation, Comments and program style. - Structured design and object-oriented analysis and design. Architectural Principles Related to Programming: - Interpretation vs. compilation to native code. - Language translation pipeline: (parsing, linking, execution). - Execution as native code. - Run-time layout of memory (call-stack, heap, static data). - Memory management (allocating, de-allocating, and reusing heap memory. - Automated memory management (garbage collection).
Module Overview:
In this module, you will develop your high-level programming skills using the industry standard languages for computer games development. You will be introduced to the fundamental concepts of data type creation, utilisation and specification, programmatic computation, logic and how to control application flow. Practical experience with a high-level language and its associated ecosystem will lead to the development of problem solving and decomposition skills in order to solve real-world development problems using the processes of the software development lifecycle.
Additional Information:In this module, students will develop their high-level programming skills using the industry standard languages for computer games development. Students will be introduced to the fundamental concepts of data type creation, utilisation and specification, programmatic computation, logic and how to control application flow. Practical experience with a high-level language and its associated ecosystem will lead to the development of problem solving and decomposition skills in order to solve real-world development problems using the processes of the software development lifecycle.

Assessments

Artefacts

Test