Module 22754.2 (2010)

Syllabus page 2010/2011

06-22754
Foundations of Computer Science

Level 1/C

Martin Escardo
John Bullinaria
10+10 credits in Semester 1 and Semester 2

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus


The Module Description is a strict subset of this Syllabus Page. (The University module description has not yet been checked against the School's.)

Relevant Links

Sem1 Web Page
Sem2 Web Page


Outline

The module will introduce the fundamental concepts of Computer Science, such as the representation of data in computer memory, programming constructs, data models and data structures and the analysis of algorithms. The ideas will be presented abstractly, although examples will be given in the language used in the parallel programming workshop modules.


Aims

The aims of this module are to:

  • introduce the fundamental concepts of Computer Science
  • support and underpin the programming modules
  • introduce advanced abstract data types and standard operations on the same and demonstrate their various representations based on arrays and pointers
  • discuss the advantages and disadvantages of the different representations of data types
  • introduce the main algorithms for fundamental tasks such as sorting and searching and examine their complexity
  • introduce basic concepts of numerical calculations

Learning Outcomes

On successful completion of this module, the student should be able to: Assessed by:
1explain principles of imperative programming Examination, Continuous Assessment
2explain the importance of abstract models of computation and data Examination, Continuous Assessment
3make informed choices between alternative ways of implementation, justifying choices on grounds such as time and space complexity or considerations of numerical accuracy Examination, Continuous Assessment
4explain and apply data structures such as binary trees, heap-trees, graphs and tables, together with their internal representations and relevant algorithms Examination, Continuous Assessment
5select, with justification, appropriate data structures to ensure efficient implementation of an algorithm (e.g. searching, insertion, deletion or sorting) Examination, Continuous Assessment
6explain the differences between basic complexity classes of algorithms (constant, linear, quadratic, logarithmic, exponential) Examination, Continuous Assessment
7argue that algorithms are correct, and derive their time complexity Examination, Continuous Assessment
8select, with justification, appropriate algorithms for basic tasks such as searching, including reference to the algorithm's complexity class Examination, Continuous Assessment

Restrictions, Prerequisites and Corequisites

Restrictions:

None

Prerequisites:

None

Co-requisites:

None


Teaching

Teaching Methods:

2 hrs lecture, 1 hr exercise class per week

Contact Hours:

70


Assessment

  • Sessional: 3 hr examination (80%), continuous assessment (20%).
  • Supplementary (where allowed): By examination only.

Recommended Books

TitleAuthor(s)Publisher, Date
Computing Science: an OverviewBrookshearAddison-Wesley,
Computer Science, a Modern IntroductionGoldschlager L & Lister APrentice Hall, 1988
Computing Concepts with Java EssentialsHorstmann C S1998
Foundations of Computer Science in CAho A V & Ullman J DFreeman & Co.,
Data Structures: An Object-Oriented ApproachCollins W J1992
Computing Concepts with Java Essentials Horstmann C S1998
Data Structures & Algorithms: A First CourseAdamson I1997
Data Structures in JavaStandish T A1997
Detailed module notes will be provided.

Detailed Syllabus

  1. Basic imperative programming, e.g.
    • Arrays and the for-loop
    • Streams and the while-loop
    • Macros, subroutines, stacks
    • Functions, procedures, and methods
    • Values and locations
  2. Basic abstract data types, e.g.
    • Array-based implementation of lists
    • Linked list implementation of lists
    • Stacks
    • Queues
  3. Abstract data structures, e.g.
    • Binary search trees. Representation, insertion, deletion, binary search, traversal.
    • Heap-trees. Array representation, applications in priority queues and sorting.
    • Graphs. Pointer and array-based representations.
    • Sets. Representations, typical problems, some algorithms.
    • Balanced binary search trees. Representation, insertion, deletion.
    • Multiway Trees. B-trees, tries.
  4. Algorithms
    • Complexity classes. Main definition, understanding of the main classes occurring in practice, determining the complexity class of a given algorithm.
    • Sorting. Principles of sorting, sorting by comparison and its complexity. The main sorting algorithms (e.g., Insertion Sort, Selection Sort, Bubblesort, Heapsort, Quicksort, Mergesort), their applicability to different data structures, their complexity, strengths and weaknesses. Sorting by distribution.
    • Searching. Sequential and binary searching, suitable data structures.
    • Graph algorithms. Shortest path, spanning tree, traversal.
    • Storing. Tables and hashing, chaining and open addressing collision handlers. Storing in trees.

Last updated: 9 Jul 2009

Source file: /internal/modules/COMSCI/2010/xml/22754.xml

Links | Outline | Aims | Outcomes | Prerequisites | Teaching | Assessment | Books | Detailed Syllabus