- Class Number 5172
- Term Code 3160
- Class Info
- Unit Value 6 units
- Mode of Delivery In Person
- Dr Steve Blackburn
- Dr Steve Blackburn
- Class Dates
- Class Start Date 26/07/2021
- Class End Date 29/10/2021
- Census Date 14/09/2021
- Last Date to Enrol 02/08/2021
This course introduces students to the fundamentals of software development with a substantial group software project at its center. Major foci are data structures, object oriented programming, and an introduction to software engineering. Students will extend their understanding of software productivity tools, using revision control for group work, and be introduced to test-driven development as an integral part of software construction.
Students will be introduced to an industrial strength object oriented programming language, extending their understanding of the imperative programming paradigm with a solid grounding in object oriented programming. Inheritance, polymorphism, and parametric types are taught, as well as concepts such as boxing and auto boxing. The important role of standard libraries and their collection types will be emphasized. GUI programming will be introduced.
The course includes a deeper treatment of data structures, using hash tables, trees and lists, which are used to provide concrete implementations of abstract library collection types. The theory of data structures and their time and space complexity will thus be tied to the practice of using standard collections such as those offered by object oriented languages.
The foundations of software engineering including: major development paradigms (such as big plan up front, agile, and formal methods), risk are introduced.
The Advanced version of this course covers these topics in more depth, allowing students to deepen their understanding and experience.
Upon successful completion, students will have the knowledge and skills to:
Upon completion of this course, the student will be able to:
- Apply fundamental programming concepts, using an object oriented programming language, to solve substantial problems
- Understand basic types and the benefits of static typing for object oriented programs
- Distinguish language definition from implementation, syntax and parsing from semantics and evaluation, understand how program state maps to memory (globals, local, heap), and understand the implications of heap reachability for memory management
- Develop, understand, test, and evolve substantial programs using a modern IDE, and associated configuration tools; understand common coding errors and how to avoid them; practice fundamental defensive programming; perform individual and team program reviews; use established design principles to organize a software system
- Use, implement, and evaluate fundamental data structures and associated algorithms; create, implement, debug, and evaluate algorithms for solving substantial problems, including recursively, using divide-and-conquer, and via decomposition; implement an abstract data type
- Apply basic algorithmic analysis to simple algorithms; use appropriate algorithmic approaches to solve problems (brute-force, divide-and-conquer, recursive backtracking, heuristic)
- Understand the basics of event-driven programming, and its use in constructing GUIs
- Deliver and evaluate basic technical documents, presentations, and group interactions, using appropriate tools
Whether you are on campus or studying remotely, there are a variety of online platforms you will use to participate in your study program. These could include videos for lectures and other instruction, two-way video conferencing for interactive learning, email and other messaging tools for communication, interactive web apps for formative and collaborative activities, print and/or photo/scan for handwritten work and drawings, and home-based assessment.
ANU outlines recommended student system requirements to ensure you are able to participate fully in your learning. Other information is also available about the various Learning Platforms you may use.
Students will be given feedback in the following forms in this course:
- written comments
- verbal comments
- feedback to whole class, groups, individuals, focus group etc
ANU is committed to the demonstration of educational excellence and regularly seeks feedback from students. Students are encouraged to offer feedback directly to their Course Convener or through their College and Course representatives (if applicable). Feedback can also be provided to Course Conveners and teachers via the Student Experience of Learning & Teaching (SELT) feedback program. SELT surveys are confidential and also provide the Colleges and ANU Executive with opportunities to recognise excellent teaching, and opportunities for improvement.
|Summary of Activities
|Java Introductory Java 1: Imperative programming languages | Java Standard Library | Types | Hello World Introductory Java 2: Types | Objects | Classes | Inheritence | Interfaces Introductory Java 3: Naming | Literals | Primitives Introductory Java 4: Arrays | Operators | Expressions | Statements | Blocks | Random Control Flow 1: if-then-else | switch Control Flow 2: while and do-while | for | break, continue Methods: Methods | Parameters | Return values Nested Classes Lambda Expressions Number, Autoboxing: Number, Integer, Short, Float | Autoboxing | Math Character and String Generics Type Inference Collections: forEach | Ordering collections Exceptions: Java exceptions | Catch or Specify Threads: Thread and Runnable | start(), join() and sleep() | Races and synchronized
|These units introduce the Java language, which is the basis for the course. Most of the content from this unit is taught in the first few weeks of semester, providing a solid foundation on which the major assignment can be built.
|Object-Orientation Classes and Objects 1: Class declaration | Object creation Classes and Objects 2: Garbage collection | Initializers | Access control | enum types Interfaces Inheritance 1: Overriding and hiding | Polymorphism | The super keyword Inheritance 2: java.lang.Object | Final classes, methods, fields | Abstract classes and methods
|These units introduce key ideas relating to object-orientation as a programming paradigm.
|Software Engineering Software Development Tools: IDEs | Revision Control | Using GitLab and git Revision Control: git Software Development Teams: Importance of people in SE | Understanding Team Effectiveness | Conflict and conflict resolution Test-Drive Development: TDD | JUnit
|These units provide a very basic foundation for practical software engineering, sufficient for the major assignment.
|Core Computer Science Recursion: Recursive Algorithms Hash Functions: Hash functions | Choosing a good hash function Hashing Applications: Java hashcode() | Applications of hashing Files: Java File I/O | Streams | Standard I/O | Random access files | Buffering Computational Complexity: Time and space complexity | Big O notation | Examples | Practical study: sets
|These units present some key foundational ideas in computer science.
|Abstract Data Types Lists 1: ADTs | The list ADT | A list interface and its implementation, Part 1 Lists 2: ADTs | The list ADT | A list interface and its implementation, Part 2 Sets: The set ADT | A set interface and its implementation Hash Tables: implementation of a set 1 Trees: The tree ADT | implementation of a set 2 Maps: The map ADT | A map interface and its implementation | ADT recap
|These units present lists, sets and maps and two first-principles implementation of each of them. The units integrate much of the learning in the course.
|JavaFX JavaFX 1: Overview of JavaFX | JavaFX scene graph JavaFX 2: JavaFX and event handling
|These units present a most basic introduction in to GUI programming for Java, sufficient to develop a simple GIU for the major assignment.
|Guest Lectures Each semester the course invites two or three guest lectures, presenting on a range of subjects.
|These units provide students with a broader perspective on computer science.
|Biographies Alan Turing Margaret Hamilton Konrad Zuse Grace Hopper John von Neumann Jeanette Wing Bob Floyd Fran Allen John McCarthy Barbara Liskov Ken Thompson Ada Lovelace Fred Brooks Shafi Goldwasser Robin Milner Anita Borg
|One of these small units is presented at each lecture. The provide a basic historical context of key people and the development of key ideas in computer science.
|Individual assignment (A1) -- redeemable
|1, 2, 3, 4
|Group assignment (A2)
|1, 2, 3, 4, 5, 6, 7, 8
|Class engagement (C) -- redeemable
|Lab test (LT) -- redeemable
|1, 2, 3, 4
|Mid-semester exam (M) -- redeemable
|1, 2, 3, 4
|Final exam (E)
|1, 2, 3, 4, 5, 6
|Basic competency test (BC)
* If the Due Date and Return of Assessment date are blank, see the Assessment Tab for specific Assessment Task details
ANU has educational policies, procedures and guidelines , which are designed to ensure that staff and students are aware of the University’s academic standards, and implement them. Students are expected to have read the Academic Integrity Rule before the commencement of their course. Other key policies and guidelines include:
- Academic Integrity Policy and Procedure
- Student Assessment (Coursework) Policy and Procedure
- Special Assessment Consideration Guideline and General Information
- Student Surveys and Evaluations
- Deferred Examinations
- Student Complaint Resolution Policy and Procedure
- Code of practice for teaching and learning
The ANU is using Turnitin to enhance student citation and referencing techniques, and to assess assignment submissions as a component of the University's approach to managing Academic Integrity. For additional information regarding Turnitin please visit the Academic Skills website. In rare cases where online submission using Turnitin software is not technically possible; or where not using Turnitin software has been justified by the Course Convener and approved by the Associate Dean (Education) on the basis of the teaching model being employed; students shall submit assessment online via ‘Wattle’ outside of Turnitin, or failing that in hard copy, or through a combination of submission methods as approved by the Associate Dean (Education). The submission method is detailed below.
Moderation of Assessment
Marks that are allocated during Semester are to be considered provisional until formalised by the College examiners meeting at the end of each Semester. If appropriate, some moderation of marks might be applied prior to final results being released.
Students are expected to attend all weekly labs, which are an essential element of the course. At each lab students will receive a lab engagement mark which contributes to the class engagement mark (CE). Additionally, the major assignment has minor deliverables due at many of the scheduled labs, and you will need to be present for those.
The course has a small mid-semester exam and a major end of semester exam. Both are online auto-graded exams comprising programming tasks. The mid-semester exam is redeemable. The final exam has a 40% hurdle requirement.
Assessment Task 1
Learning Outcomes: 1, 2, 3, 4
Individual assignment (A1) -- redeemable
This is a small individual programming assignment to be completed early in semester. This assessment is redeemable via your final exam, meaning you will receive either the mark for this assessment or the weighted score in your final exam, whichever is higher.
Assessment Task 2
Learning Outcomes: 1, 2, 3, 4, 5, 6, 7, 8
Group assignment (A2)
This is a major group assignment with multiple deliverables throughout the semester. Details published on gitlab after the completion of assignment 1.
Assessment Task 3
Class engagement (C) -- redeemable
A small number of marks are awarded for class engagement. These marks are based on engagement in your lab, engagement with the class forum, and participation in in-class quizes. This assessment is redeemable via your final exam, meaning you will receive either the mark for this assessment or the weighted score in your final exam, whichever is higher.
Assessment Task 4
Learning Outcomes: 1, 2, 3, 4
Lab test (LT) -- redeemable
Early in semester you will be assessed via an in-class practical test. The purpose of this test is to ensure that you have attained basic familiarity with the tools used in this class, and can write simple programs. This assessment is redeemable via your final exam, meaning you will receive either the mark for this assessment or the weighted score in your final exam, whichever is higher.
Assessment Task 5
Learning Outcomes: 1, 2, 3, 4
Mid-semester exam (M) -- redeemable
This class includes a short mid-semester exam, which is held online. This assessment is redeemable via your final exam, meaning you will receive either the mark for this assessment or the weighted score in your final exam, whichever is higher.
Assessment Task 6
Learning Outcomes: 1, 2, 3, 4, 5, 6
Final exam (E)
The final exam will be held online using gitlab and will comprise of auto-graded programming questions and multiple choice questions. This is a hurdle assessment: you must achieve a mark of at least 40% in the final exam to pass the course.
Assessment Task 7
Learning Outcomes: 1, 4
Basic competency test (BC)
The basic competency test is designed to ensure that every student in the class is able to use each of the key technologies that this class depends upon, including using the IDE , writing basic programs, testing them, and using git. This is a hurdle assessment: You must pass the basic competency test to complete this course. The basic competency test is waived for students who pass the lab test (LT), so in practice most students will not be asked to take this test.
Academic integrity is a core part of the ANU culture as a community of scholars. The University’s students are an integral part of that community. The academic integrity principle commits all students to engage in academic work in ways that are consistent with, and actively support, academic integrity, and to uphold this commitment by behaving honestly, responsibly and ethically, and with respect and fairness, in scholarly practice.
The University expects all staff and students to be familiar with the academic integrity principle, the Academic Integrity Rule 2021, the Policy: Student Academic Integrity and Procedure: Student Academic Integrity, and to uphold high standards of academic integrity to ensure the quality and value of our qualifications.
The Academic Integrity Rule 2021 is a legal document that the University uses to promote academic integrity, and manage breaches of the academic integrity principle. The Policy and Procedure support the Rule by outlining overarching principles, responsibilities and processes. The Academic Integrity Rule 2021 commences on 1 December 2021 and applies to courses commencing on or after that date, as well as to research conduct occurring on or after that date. Prior to this, the Academic Misconduct Rule 2015 applies.
The University commits to assisting all students to understand how to engage in academic work in ways that are consistent with, and actively support academic integrity. All coursework students must complete the online Academic Integrity Module (Epigeum), and Higher Degree Research (HDR) students are required to complete research integrity training. The Academic Integrity website provides information about services available to assist students with their assignments, examinations and other learning activities, as well as understanding and upholding academic integrity.
All assessments in this course are delivered via gitlab.
This course has a firm deadline policy. Assignments are submitted via gitlab, and you will be assessed based on the work submitted by the deadline. Late submissions are not accepted. In cases where students are unable to make a deadline (eg through illness or misadventure), they should use ANU's special assessment consideration mechanism to ensure that their circumstances are properly accommodated through alternative assessment.
The Academic Skills website has information to assist you with your writing and assessments. The website includes information about Academic Integrity including referencing requirements for different disciplines. There is also information on Plagiarism and different ways to use source material.
Assignments are marked promptly with feedback posted to gitlab. Minor deliverables are marked in-lab.
Extensions and Penalties
Extensions and late submission of assessment pieces are covered by the Student Assessment (Coursework) Policy and Procedure. Extensions may be granted for assessment pieces that are not examinations or take-home examinations. If you need an extension, you must request an extension in writing on or before the due date. If you have documented and appropriate medical evidence that demonstrates you were not able to request an extension on or before the due date, you may be able to request it after the due date.
Resubmission of Assignments
Assignments may not be resubmitted.
Distribution of grades policy
Academic Quality Assurance Committee monitors the performance of students, including attrition, further study and employment rates and grade distribution, and College reports on quality assurance processes for assessment activities, including alignment with national and international disciplinary and interdisciplinary standards, as well as qualification type learning outcomes.
Since first semester 1994, ANU uses a grading scale for all courses. This grading scale is used by all academic areas of the University.
Support for students
The University offers students support through several different services. You may contact the services listed below directly or seek advice from your Course Convener, Student Administrators, or your College and Course representatives (if applicable).
- ANU Health, safety & wellbeing for medical services, counselling, mental health and spiritual support
- ANU Access and inclusion for students with a disability or ongoing or chronic illness
- ANU Dean of Students for confidential, impartial advice and help to resolve problems between students and the academic or administrative areas of the University
- ANU Academic Skills and Learning Centre supports you make your own decisions about how you learn and manage your workload.
- ANU Counselling Centre promotes, supports and enhances mental health and wellbeing within the University student community.
- ANUSA supports and represents undergraduate and ANU College students
- PARSA supports and represents postgraduate and research students