Course syllabus

 

Prerequisite & Restrictions

COMPSCI 105 or 107 or 130. No restrictions. GPA >= 2 required for enrolment.

Course Description

An introduction to object-oriented and concurrent programming. Using Java, students will develop a software application of reasonable complexity through the application of established software development techniques. In doing so, students will demonstrate fundamental skills in object-oriented software development, GUI programming and application-level multithreading.

Course Content

Theme (A) Java language

  • you will become confident and fluent with the Java language.

Theme (B): the object-oriented programming paradigm covers the follow topics:

  • The object-oriented paradigm, introducing objects,  methods, classes, interfaces, class hierarchies. 
  • Information hiding, abstraction, programming to interfaces, and enforcement of design intent using language features such as visibility qualifiers, constructors, constants, sealed classes, abstract classes and interfaces.
  • Data typing in object-oriented programming languages,  the principle of substitution, method overriding and overloading, polymorphism, dynamic binding, generic types.

Theme (B): frameworks, illustrated by a contemporary GUI framework (Java Swing), covers:

  • Inversion of control principle.
  • Application of fundamental OOP concepts, introduced in theme B.
  • Event handling
  • Model/view design

Theme (C): application-level concurrent programming covers:

  • The lightweight threads programming model and thread lifecycle.
  • Synchronisation, mutual exclusion, and liveness.
  • High level concurrency primitives, language dependent but to include abstractions like locks, executors, thread pools, and concurrent collections.
  • Concurrency issues in GUI applications: the event dispatching thread, worker threads and background tasks, tasks with interim results.

Expected Learning Outcomes

 Upon completion of this course the students will be able to:

  • OO Programming: describe and use the features typically offered by an object-oriented programming language, including support for classes, visibility, inheritance, interfaces, polymorphism and dynamic binding
  • OO Design: explain and apply key design principles of object-oriented software development, including separation of concerns, abstraction, information hiding, programming to interfaces, coupling and cohesion, resilience to change, and reuse
  • create simple OO design models
  • Frameworks: describe important concepts of programming frameworks, including APIs, inversion of control and event-driven programming
  • use a framework to develop a multithreaded GUI application
  • Concurrent Programming: explain and apply the principles of application-level multithreading: threading, condition synchronization, mutual exclusion, and primitives associated with these

Passing the Course

  • Final Exam: 50%; Tests: 2*10%; Coderunner assignments: 10*2%; Programming assignments: 2*5%.
  • There will be 10 Coderunner assignments in all weeks except week 6 and 11, when the programming assignments will be due.
  • COMPSCI 230 has a separate pass requirement, which means you must pass the theory (tests and exam) section and, as far as applicable, the practical (assignments) section, separately.
  • This course does not advertise a practical pass mark. If you have not achieved 50% in the assignments or tests, you are still advised to sit the exam.

Assignments

Coderunner assignments worth 2% each. These assignments must be completed by 23:59 pm on each Saturday at the end of each teaching week, starting in week 2, except in week 11 (31 May). The assignments will consist of multiple choice questions similar to those you may encounter in tests and final exam and / or small code writing problems.

Tests

The two tests are worth 10% each of your final mark, i.e. a total of 20%. The first test will take place on Tuesday, 26 March 2019, during the lecture from 11-12noon. The second test will take place on Tuesday, 21 May.

Both tests will be entirely multiple choice with five answer options per question, one of which is intended to be correct. If you think that more than one option is correct, choose one of them and let me know after the test. Similarly, if you think that no option is correct, choose the one that you think may have been intended as the correct one and contact me after the test.

Each test will contain a unique combination of questions and answer options. The first few questions will instruct you to enter certain answers. These are the code that identifies your paper.

Exam

The final exam is worth 50% of your final mark. Please check Student Services Online for the exam time and date. The exam is closed book, and calculators are not permitted. Provisional exam results can be obtained from Student Services Online.

Lecture Times and Locations

  • Monday 11am-12noon, 301-G050 (Science Chem, Room G050)
  • Tuesday 11am-12noon, 301-G050 (Science Chem, Room G050)
  • Thursday 11am-12noon, 301-G050 (Science Chem, Room G050)

Please re-check all room allocations closer to the time on SSO as they often change around the start of semester.

Laboratory Tutorial Times and Locations

The laboratories and CR assessments are worth 20% of your final mark. Every laboratory session contributes towards your final grade. The labs are designed to give you practical experience with the concepts which you have learnt in lectures. They will include some activities to be completed during the laboratory session. You should make sure you have read through the lecture slides and have done any other preparation required before you attend the laboratory.

The laboratories are submitted using the CodeRunner website. Submissions are graded by running a series of test cases of the code in a sandbox and comparing the output of your program with the expected output. This automated testing allows you to obtain immediate feedback on your progress throughout the course. Some submissions will also be graded manually to provide further feedback. You will be able to access your exercises by logging into: https://www.coderunner2.auckland.ac.nz/moodle/

  • Mo 9am-10am, G75
  • Mo 2pm-3pm, G75
  • Tu 9am-10am, G75
  • Tu 1pm-2pm, G75
  • Tu 4pm-5pm, G75
  • Wed 10am-11am, G75
  • Wed 1pm-2pm, G75
  • Fr 8am-9am, G75
  • Fr 10am-11am, G75

Laboratories begin in the 2nd week of semester (i.e. first one will be 11 Mar). Please re-check all room allocations closer to the time on SSO as they often change around the start of semester.

Course summary:

Date Details