Programming and Problem Solving

University of Otago

Course Description

  • Course Name

    Programming and Problem Solving

  • Host University

    University of Otago

  • Location

    Dunedin, New Zealand

  • Area of Study

    Computer Programming, Computer Science

  • Language Level

    Taught In English

  • Prerequisites

    COMP 160 or COMP 103

  • Course Level Recommendations


    ISA offers course level recommendations in an effort to facilitate the determination of course levels by credential evaluators.We advice each institution to have their own credentials evaluator make the final decision regrading course levels.

    Hours & Credits

  • Credit Points

  • Recommended U.S. Semester Credits
    3 - 4
  • Recommended U.S. Quarter Units
    4 - 6
  • Overview

    Programming in Java to solve real-world problems; abstract data types; lists, stacks, and trees; algorithm design.

    This paper builds on and extends the knowledge students gained of programming and the Java language in COMP 160. More advanced programming ideas, such as recursion and abstract data type design, are introduced, as well as their implementations in Java. A variety of different data structures are discussed together with the algorithms to query and modify them. Theoretical and practical analyses of efficiency are used throughout the paper.

    Teaching Arrangements
    There are two labs and two lectures per week.

    Course Structure
    This paper follows on from COMP 160. Its major aims are:
    - To reinforce the abstract data type concept introduced in COMP 160 and to explain some of the most useful abstract data types
    - To explain some important data structures with which to implement these abstract data types
    - To introduce design and analysis techniques for algorithms
    - To give practice in writing medium-scale Java programs (testing, de-bugging, run-time and storage analysis from both a theoretical and a practical viewpoint)
    - To encourage good practice in all aspects of programming

    - Assignment 10%
    - Practical Tests 5% and 10%
    - Assessed Labs 15%
    - Final Exam 60%

    Learning Outcomes
    Students will:
    - Understand the nature of algorithms and how to analyse their efficiency
    - Understand random number generators and how to make use of them
    - Have an appreciation for abstract data types (ADTs) and a knowledge of the ADTs most commonly used in software development (eg stacks, queues, lists, sets, priority queues and equivalence relations)
    - Have an understanding of the most common data structures used to represent ADTs (eg arrays, linked lists, binary search trees) and the algorithms that operate on them
    - Understand the structure of graphs and networks and some of the algorithms that apply to them
    - Have an increased proficiency in Java programming

    Java Foundations: Introduction to program design & data structures, second edition, by Lewis, DePasquale and Chase.

Course Disclaimer

Courses and course hours of instruction are subject to change.

Eligibility for courses may be subject to a placement exam and/or pre-requisites.

Some courses may require additional fees.

Credits earned vary according to the policies of the students' home institutions. According to ISA policy and possible visa requirements, students must maintain full-time enrollment status, as determined by their home institutions, for the duration of the program.

Please reference fall and spring course lists as not all courses are taught during both semesters.

Availability of courses is based on enrollment numbers. All students should seek pre-approval for alternate courses in the event of last minute class cancellations

Please note that some courses with locals have recommended prerequisite courses. It is the student's responsibility to consult any recommended prerequisites prior to enrolling in their course.