Module ICP-1030:
Computing Fundamentals

Module Facts

Run by School of Computer Science and Electronic Engineering

20 Credits or 10 ECTS Credits

Semester 1 & 2

Organiser: Dr David Evans

Overall aims and purpose

To introduce the student to fundamental topics of computer science. Students are introduced to a broad range of computing topics – including architecture, data storage, operating systems, pseudo-code, programming and languages in general, and graphics.

Course content

  • Data Storage – main memory, secondary storage, bits, hex, representing information as bits, binary, two’s complement, compression, communication errors.

  • Data Manipulation – computer architectures, machine language, program execution, communicating with devices.

  • Operating Systems – history, components, boot strapping, processes and their coordination, deadlock, security.

  • Algorithms – what an algorithm is and how one is deduced, pseudo code in depth (including if, while/repeat loops, procedures, and recursion), efficiency, and verification.

  • Programming Languages – the different generations, the different types (OO, procedural, functional etc).

  • Software Engineering – the life cycle, some methodologies, including mention of UML, testing, documentation, HCI, legal aspects.

  • Graphics – modeling (polygonal meshes, describing shapes, surfaces, realism, scene graph), rendering (light, clipping, scan conversion, shading), rendering-pipeline hardware, very basics of animation.

Learning outcomes mapped to assessment criteria

  threshold

40%

good

60%

excellent

70%

Appreciate the history of computer science

Knows the origins of Computing Machines, from the early days to today. Can define some of the main terminology used in computer science. Be able to discuss social repercussions of the use of computers.

Discuss and understand data storage.

Represent positive integers in binary; discuss disadvantages and advantages of various secondary storage; apply parity bits. Decode messages encoded using adaptive dictionary encoding. Be able to fully understand and apply hamming distances.

Understand how the computer manipulates data and executes programs

Understand and reproduce layout of basic CPU and main memory architecture Be able to understand a short machine code program; understands how the architecture executes an instruction. Understand the principles of pipelining; given a short machine code program, can explain exactly how it would be executed by the CPU.

Discuss how an operating system controls a computer.

Can name and describe the basic components of an OS Can take the 3 deadlock conditions and apply them to different situations; understands how the different OS components relate to each other. Can explain in detail the workings of the dispatcher and scheduler.

Understand and write simple algorithms.

Can understand a simple algorithm and explain what the output would be. Can write an algorithm to solve a simple problem; appreciates the concept of efficiency. Can write an algorithm to solve a moderately difficult problem; Understands recursion; can understand efficiency of algorithms and compare the efficiency of two.

Discuss how programming languages have evolved over the years.

Can describe the basics of each generation. Can describe in some detail each generation and each type of language. Can compare the generations, provide examples of each, and fully understands the benefits of each new generation; can discuss in detail the different types of languages.

Discuss the various stages of software development.

Can describe the basic software cycle. Understands the shortcomings of testing and legal aspects. Can discuss in detail the problems with requirements specifications and verification; can understand a simple UML use case and class diagram.

Discuss the basics of computer graphics

Can discuss how 3D scenes are rendered. Can describe how shapes are modelled. Understand the 3D graphics paradigm.

Research and discuss topics of interest about computer science

Assessment Methods

Type Name Description Weight
Examination 70
History of Computer Science, Number Systems and Simple Algorithms 10
Presentation 10
Digital Circuits, Logic, Algorithms and Software Development 10

Teaching and Learning Strategy

Hours
Lecture

24 hours per Semester over 12 weeks

48
Private study 152

Transferable skills

  • Numeracy - Proficiency in using numbers at appropriate levels of accuracy
  • Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
  • Information retrieval - Able to access different and multiple sources of information
  • Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.
  • Presentation - Able to clearly present information and explanations to an audience. Through the written or oral mode of communication accurately and concisely.
  • Teamwork - Able to constructively cooperate with others on a common task, and/or be part of a day-to-day working team

Subject specific skills

  • Knowledge and understanding of facts, concepts, principles & theories
  • Problem solving strategies
  • Analyse if/how a system meets current and future requirements
  • Recognise legal, social, ethical & professional issues
  • Development of general transferable skills
  • Knowledge of systems architecture

Pre- and Co-requisite Modules

Courses including this module