Course syllabus

Prerequisite & restrictions

COMPSCI 105 or 107. No restrictions.

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. 

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:

  • Describe the features typically offered by an object-oriented programming language, including support for classes, visibility, inheritance, interfaces, polymorphism and dynamic binding.
  • Explain key principles and best practice associated with object-oriented software development. These include abstraction, information hiding, programming to interfaces, resilience to change, and reuse.
  • Put into practice object-oriented programming knowledge and develop a relatively large, with respect to software developed on prerequisite courses, object-oriented software application.
  • Describe the principles of application-level multithreading: threading, condition synchronisation and mutual exclusion; and primitives associated with these.
  • Develop a multithreaded application that uses threads appropriately and correctly.
  • Describe and apply contemporary techniques that can be used to help develop software that meets its specification. These include source code inspection and basic software testing techniques: black box, white box and unit testing

Timetable

Lectures

  • Tu 3:00PM - 4:00PM
  • Th 11:00AM - 12:00PM
  • Fr 12:00PM - 1:00PM

Venue: 201N-346 (Human Sciences - North,Rm 346)

Tutorials

Tutorials will start from week 3.

  • Mo 12:00PM - 1:00PM, 303S-G75 (Science Main, Room G75)- Harry
  • Mo 1:00PM - 2:00PM, 303S-G75 (Science Main, Room G75) - William
  • Tu 12:00PM - 1:00PM, 303S-G75 (Science Main, Room G75) - Harry
  • Th 8:00AM - 9:00AM, 303S-175 (Science Main, Room 175) - Harry
  • Th 9:00AM - 10:00AM, 303S-G75 (Science Main, Room G75) - William
  • Fr 9:00AM - 10:00AM, 303S-G75 (Science Main, Room G75)- William
  • Fr 3:00PM - 4:00PM, 303S-G75 (Science Main, Room G75)- William

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

Lecturer

Dr Ulrich Speidel (Course Coordinator)

  • Note: Due to unforeseen circumstances beyond anyone's control, Beryl Plimmer will not be able to lecture this course. Please re-direct any unanswered enquiries to Ulrich (and please bear with me while I come to grips with Beryl's role at short notice).

 Ulrich Speidel - small.jpg

Tutors

Tutor office hours: TBA

Class reps

Shivam Tripathi (stri331@aucklanduni.ac.nz)

shivam.jpg

Dan Richards (daniel@trimagephotography.co.nz)

daniel.jpg

Passing the Course

  • Final Exam: 60%; Test: 20%; Assignments: 20%.
  • There will be 10 weekly assignments for weeks 3-12 each worth 2%
  • COMPSCI 230 has a separate pass requirement, which means you must pass the theory (test 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 test, you are still advised to sit the exam.

Assignments

This course will have ten Coderunner assignments worth 2% each. These assignments must be completed by 23:59 pm on each Friday at the end of each teaching week, starting in week 3. Half of the assignments will consist of multiple choice questions similar to those you may encounter in test and final exam, the other half will consist of code writing problems.

Test

The test is worth 20% of your final mark. It will take place on Monday, 1 May 2017, from 6:15 pm to 7:30  pm. Your test locations for the general session will be based on your UPI (university login name):

  • 206-220: aaar001 to csee015
  • ALR1/421W-201: csel002 to gwis003
  • HSB370/201N-370: gwor011 to jpet145
  • MLT3/303-101: jpos121 to mhos205
  • OCH1/104-G53: mhu451 to safr034
  • OCH2/104-G54: sagn014 to vwan157
  • Design Lecture Theatre/423-348: vwon320 to zzho644.

Note: Due to the class size, the test venues do not have spare seats. You must sit the test at your assigned venue. Failure to do so seriously inconveniences your fellow students. Anyone found to be turning up at the wrong room or sitting out of location will be sent to their correct location and may lose time and marks as a result.

Bring: Your student ID, a black pencil, a pencil sharpener, and an eraser (or correction tape or fluid). Turn off your phone / smart watch and leave them in your bag. Do not read your test material as you enter the room. Total test time will be 45 minutes (5 minutes reading time plus 40 minutes writing time). No toilet breaks (if you have a condition that requires trips to the toilet, please let the room supervisor know in advance).

The test is 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. You will not be disadvantaged by genuine errors in test questions - promise!

Exam

The final exam is worth 60% 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.

Textbook

The course will use Deitel & Deitel, Java How to Program (late objects), 10th Edition, Prentice Hall (2014). The textbook is not compulsory but comes strongly recommended. Note: Most topics are also covered in the 9th edition. 

Lecture Recordings

All lectures are recorded. Due to quality assurance, there may be a delay of a few days before the lecture recordings are distributed through Canvas. You can find the lecture recordings on the Lecture Recordings page in Canvas. Note that although the lectures are recorded, some learning activities conducted in class do not translate well to the recordings. To maximise your learning opportunities, you are encouraged to attend the class in person.

Piazza

Teaching staff regularly monitor the Piazza discussion forum in Canvas. Please make use of Piazza to ask any questions that you think might be of interest to other students - it's usually the fastest way to get an answer.  If your question is of a personal nature, or relates to a unique situation that will be of little interest to others, then please contact the teaching staff directly.

PeerWise

For your convenience, this course is also present on PeerWise. We have imported the top 300 rated questions from last year's course. Not all of them may be relevant, but have a go at them and add your own questions to help you and your classmates learn! Note: This facility will become available in week 3 only, once the class roll is stable.

Help with Canvas

For help with Canvas see:

https://www.auckland.ac.nz/en/about/learning-and-teaching/CanvasHomepage/canvas-help---support.html.

Handling illness or absence

Disasters happen, and they shouldn't turn into showstoppers for you. If you must leave for family emergencies etc., please talk to the lecturer or somehow get a message to the department. The earlier we know, the better we can help.

For problems affecting assignments or tests see the lecturer as soon as reasonably possible.

For illness during exams or written tests (or other problems that affect exam or test attendance or performance) there is a central university policy that applies to all courses. It requires that students MUST contact the University within one week of the last affected examination, to apply for an aegrotat pass (for illness) or compassionate pass (other problems). Note: The one week limit is strictly enforced.

Refer to the University information link on Aegrotats and Compassionate Considerations:

https://www.auckland.ac.nz/en/for/current-students/cs-academic-information/cs-examination-information/cs-aegrotat-and-compassionate-consideration.html

Policies

Here's the small print. We know that the vast majority of you don't really need to be lectured on this because you're genuinely here to learn and you value the diversity that comes with being at a university as much as we do. Nevertheless, please note the following:

Inclusiveness

We value you coming here to study with us, no matter where you come from or how you view yourself, and strive to accommodate disabilities. We want you to feel safe and welcome.

For this reason, the University of Auckland has zero tolerance for discrimination. Racism, sexism, homophobia, transphobia, ableism and other ‘isms’ share one key feature: they ascribe negative characteristics to a group, and assume that those characteristics apply to all members of the group. The vice chancellor encourages anyone who experiences such behaviour to seek resolution via the appropriate processes, including if necessary complaints procedures, so the University can act appropriately.

Please see

https://www.auckland.ac.nz/en/about/eo-equity-office/zero-tolerance-for-discrimination.html

or talk to a member of the teaching staff or the student support network if you have any concerns.

Academic Integrity

We know that most of you won't cheat because you're here to gain insight and understanding. We don't want your achievements to be overshadowed by the misguided behaviour of others.

The University of Auckland will not tolerate cheating, or assisting others to cheat, and views cheating in coursework as a serious academic offence. The work that a student submits for grading must be the student's own work, reflecting his or her learning. Where work from other sources is used, it must be properly acknowledged and referenced. This requirement also applies to sources on the world-wide web. A student's assessed work may be reviewed against electronic source material using computerised detection mechanisms. Upon reasonable request, students may be required to provide an electronic version of their work for computerised review.

Please refer to http://www.auckland.ac.nz/uoa/home/about/teaching-learning/honesty

 

 

Course summary:

Date Details Due