COMPSCI 230: Programming Techniques

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:

  • 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

Timetable

Lectures

  • We 15:00 - 16:00 Human Sciences - North,Rm 346
  • Th 15:00 - 16:00 Human Sciences - North,Rm 346
  • Fr 15:00 - 16:00 General Library, Room B28
Tutorials

Tutorials will start from week 2.

  • Mo 10:00 - 11:00, 303S-G75 (Science Main, Room G75) - Liam
  • Mo 11:00 - 12:00, 303S-G75 (Science Main, Room G75) - Vaibhav
  • Tu 08:00 - 09:00, 303S-G75 (Science Main, Room G75) - Liam
  • Tu 10:00 - 11:00, 303S-G75 (Science Main, Room G75) - Liam
  • Tu 11:00 - 12:00, 303S-G75 (Science Main, Room G75) - Vaibhav
  • Th 08:00 - 09:00, 303S-G75 (Science Main, Room G75) - Vaibhav
  • Th 09:00 - 10:00, 303S-G75 (Science Main, Room G75) - Vaibhav

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

Lecturers

Dr Ulrich Speidel (Course Coordinator)

 Ulrich Speidel - small.jpg

 

Angela Chang

Angela Chang

Tutors

Vaibhav Mor vmor458@aucklanduni.ac.nz

Vaibhav Mor

Liam Rigby lrig521@aucklanduni.ac.nz

Liam Rigby

Class reps

Patience Mitchell (pmit550@aucklanduni.ac.nz) and Ezzy Mortimer (emor872@aucklanduni.ac.nz)

Passing the Course

  • Final Exam: 60%; Tests: 2*10%; Coderunner assignments: 10*1%; Programming assignments: 2*5%.
  • There will be 10 Coderunner assignments in all weeks except week 5 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

This course will have ten Coderunner assignments worth 1% each. These assignments must be completed by 23:59 pm on each Friday at the end of each teaching week, starting in week 1, except in weeks 6 (20 Apr) and 11 (25 May). The assignments will consist of multiple choice questions similar to those you may encounter in tests and final exam ahd / or small code writing problems.

The coderunner assignments contribute to the assessment of the following graduate capabilities of the draft BSc graduate profile:

  1. Disciplinary Knowlegde and Practice: You are expected to demonstrate your ability to apply concepts and methods taught in the lectures.
  2. Critical Thinking: You are expected to demonstrate your ability to reason logically and think analytically.
  3. Solution Seeking: You are expected to demonstrate your ability to find information and use principles and methods appropriate to Computer Science in order solve problems in context,
  4. Communication and Engagement: not covered
  5. Independence and Integrity: You are expected to demonstrate your ability to work autonomously and with self-discipline and develop independent understanding.

In weeks 6 and 11, you will be working on two extensive programming assignments. In addition to the four graduate capabilities assessed above, these assignments also contribute to the assessment of capability 4 (Communication and Engagement) by expecting you to use, manage and communicate information in English and to communicate effectively using appropriate context-dpenedent language, presenting information clearly and logically.

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 Friday, 23 March 2017, during the lecture from 3 pm to 4 pm in the usual lecture theatre.The second test will take place on Friday, 18 May, at the same time and location.

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. You will not be disadvantaged by genuine errors in test questions - promise!
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.
The tests contribute to the assessment of graduate capabilities 1, 2, 3 and 5 above.

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.

The exam contributes to the assessment of graduate capabilities 1, 2, 3 and 5 above.

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.

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