COMP1100: Introduction to Programming and Algorithms


(6 units) Group A
First Semester


Thirty one-hour lectures and nine two-hour tutorial/laboratory sessions

Lecturer: Dr Peter Strazdins and Dr Henry Gardner

Assumed Prior Knowledge

Students are assumed to have achieved a level of knowledge of mathematics comparable to at least ACT Advanced maths major or NSW 2 unit maths or equivalent.

Syllabus

This course is an introduction to the basic principles of programming from an object-oriented perspective. These principles are applied in a study of straightforward algorithms for searching and sorting. It provides a foundation for studies in computer science, information systems and software engineering.

The following topics are covered: basic concepts of programming (data types, assignment, control structures, the procedural abstraction), basic concepts of object-oriented programming (class, object, attributes, routines), library classes for basic datatypes, straightforward algorithms for search and searching, object-oriented methods (class inheritance, assertions on routines, design by contract).

The course has a strong practical emphasis, with required attendance at laboratory sessions.

Description

This course provides an introduction to the basic principles of programming from an object-oriented perspective. Specifically, it studies the following basic concepts of object-oriented programming through their implementation in the Java programming language:
class (static) and object (dynamic), class features (attributes and routines), basic attribute types (booleans, integers, characters and reals), routine bodies (local attributes, statements (assignment, conditional, loop, routine call)), routine parameters, run-time structures (object store (heap), activation stack), class inheritance.

The course uses the ``consumer before producer'' viewpoint, in which the student programmer is a consumer of existing software (studying exemplar programs, and using library classes) before moving to be a producer of software components (first by extending and modifying existing classes).

Rationale

This is the first course in the curriculum for the BInfTech and BSEng degrees, and in the study of the computing discipline in the BSc degree. It is based on the conviction that modern object-oriented methods can deliver software systems that are extensible, reusable and reliable, across a wide range of problem domains. The object-oriented perspective, then, is taken from the very start.

It is the first of a sequence of courses (COMP1100, COMP1110, COMP2100) with a primary focus on the object-oriented approach to the implementation of software systems. The development of an object-oriented approach to design and then to analysis is carried out in subsequent courses.

Ideas

This course carries the main responsibility for the introduction of the following ideas and skills:

This course shares the responsibility for the introduction of the following ideas and skills:

Topics

The following topics will be covered:

Objectives

Upon completion of this course, the student will be able to do the following.

  1. Describe the concepts of an object-oriented programming language.

  2. Given the specification of a simple task, write a program to perform that task.

  3. Explain the essentials of straightforward algorithms for searching and sorting.

  4. In the context of a program involving several programmer-written classes and several library classes:

  5. Given an appropriate specification, modify the behaviour of a given program within its design and architecture by such techniques as

Technical Skills

Upon completion of the course the student will be able to use a modern GUI-based computer system (Unix, KDE) to perform the following tasks: The student will be able to use a command interface (shell) to perform basic tasks.

Recommended Reading



Peter Strazdins 2005-03-10