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.
|Paper title||Programming and Problem Solving|
|Teaching period||First Semester|
|Domestic Tuition Fees (NZD)||$1,080.30|
|International Tuition Fees (NZD)||$4,858.95|
- COMP 160 or 103
- Schedule C
- Arts and Music, Commerce, Science
Computer Science Adviser (email@example.com)
- More information link
- View more information about COSC 241
- Teaching staff
- Co-ordinator: Professor Michael Albert
Lecturers: Professor Michael Albert and Dr Stefanie Zollmann
Professional Practice Fellow: Iain Hewson
- Paper 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%
- Teaching Arrangements
- There are two labs and two lectures per week.
Textbooks are not required for this paper.
- Course outline
- View the course outline for COSC 241
- Graduate Attributes Emphasised
- Communication, Critical thinking, Information literacy, Self-motivation, Teamwork.
View more information about Otago's graduate attributes.
- 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 (e.g. stacks, queues, lists, sets, priority queues and equivalence relations)
- Have an understanding of the most common data structures used to represent ADTs (e.g. 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