• Class Number 4455
  • Term Code 3330
  • Class Info
  • Unit Value 6 units
  • Mode of Delivery In Person
  • COURSE CONVENER
    • Dr Ranald Clouston
  • LECTURER
    • Dr Nisansala Yatapanage
  • Class Dates
  • Class Start Date 20/02/2023
  • Class End Date 26/05/2023
  • Census Date 31/03/2023
  • Last Date to Enrol 27/02/2023
  • TUTOR
    • Donovan Crichton
SELT Survey Results

This course is the first of three core computer science courses on programming. It introduces students to the field of computer science as a discipline for solving problems through computation and provides the foundation for more advanced courses on programming and software development. Data structures and algorithms, the key concepts at the core of computer science, receive their first treatment in this course.


The course covers functional programming in depth, developing the core idea of functions operating on data structures. Students learn the organization of programming languages using types, how programs are evaluated (reduction), functional composition, recursive functions, algebraic data types, pattern matching, parametric polymorphism, higher-order functions. Students also gain exposure to asymptotic analysis of basic data structures, abstract data types, modules, laziness, and streams. The functional paradigm demonstrates elegant solutions to many programming problems.


The course also introduces students to standard productivity tools for software development that will be used throughout the course and remainder of the computer science degree. These include distributed software revision control systems.


The Advanced version of this course covers these topics in more depth, allowing students to deepen their understanding and experience.

Learning Outcomes

Upon successful completion, students will have the knowledge and skills to:

  1. Apply fundamental programming concepts, using a functional programming language, to solve problems.
  2. Understand basic types and the benefits of static typing.
  3. Describe, understand and evolve programs, via documentation, testing, and debugging.
  4. Discuss, use, and apply the fundamentals of data structures, algorithms, and design; create, implement, and debug algorithms for solving problems, including recursively, using divide-and-conquer, and via decomposition.
  5. Discuss basic algorithmic analysis for simple algorithms; determine appropriate algorithmic approaches to a problem (for example bruteforce, greedy, divide-and-conquer, recursive backtracking, heuristic, dynamic programming).
  6. Understand and apply the concepts of parametric and ad-hoc polymorphism

Examination Material or equipment

Depending on the state of covid rules at the time, exams might be on campus or sat at home. If exams are sat at home they will be open book, but with communication with others during the exam strictly prohibited. Students who do not have an appropriate space to sit an exam at home will have the option to sit in our labs.

Textbook: Simon Thompson, The Craft of Functional Programming, 3rd edition, Addison-Wesley, 2011. There are additional materials (including errata and useful links) at the textbook Web-site.

Staff Feedback

Students will be given feedback in the following forms in this course:

  • written comments
  • verbal comments
  • feedback to whole class, groups, individuals, focus groups
  • online via course forums, Wattle, GitLab, and GradeScope.

Student Feedback

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.

Other Information

This course does allow for collaboration if your collaborators are explicitly mentioned in your submission and some additional rules are followed:

  • The writing of code and documentation that you intend to submit must always be done entirely by you, and you only.
  • You may exchange ideas on scrap paper, boards, and the like, but do not work together on documents (e.g., reports or code) that are intended for submission.
  • Do not collaborate or communicate with other students about your submission right before you start writing your submission documents.
  • Leave some time to digest your discussions with others before working on your submission.

A student in this course is expected to be able to explain and defend their submitted assessment items. The course convener may conduct or initiate an additional interview about any submitted assessment item for any student in the course. Any significant discrepancy between the submitted assessment and interview may trigger further investigation.

Class Schedule

Week/Session Summary of Activities Assessment
1 Introduction, Sets and Functions, Programming Lab: ANU environment, Linux, Haskell
2 Haskell, Basic Types, Algebraic Data Types Lab: Gitlab, VSCode, More Haskell
3 Case Expressions, Lists Lab: Algebraic Data Types, Pattern Matching, Guards
4 Technical Report Writing, Recursion, Recursion with Lists Lab: Cabal and CodeWorld
5 Parametric Polymorphism Lab: Recursion and Lists Assessment: Engagement Hurdle, Assignment 1 Indicative Part A due
6 Code Quality Lab: More Lists, Parametric Polymorphism, Recursive Data Types Assessments: Midterm exam (exact date may vary based on exam schedule), Assignment 1 due first week of teaching break
7 Anonymous Functions, Higher Order Functions, Style Lab: Style and Testing
8 Ad Hoc Polymorphism:n Type Classes Lab: Higher Order Functions Assessment: Assignment 2 Due
9 Search, Trees, Game Trees Lab: Recursion on Trees
10 Alpha-Beta Pruning, Complexity Lab: Type Classes, Ad Hoc Polymorphism, Binary Search Trees
11 Sorting, Laziness Lab: Complexity
12 Review Lab: Exam Prep Assessment: Assignment 3 Due

Tutorial Registration

https://mytimetable.anu.edu.au/even/student

Assessment Summary

Assessment task Value Due Date Return of assessment Learning Outcomes
Programming Assignment 1 (A1) 10 % 09/04/2023 26/04/2023 1,2,3
Programming Assignment 2 (A2) 12 % 30/04/2023 17/05/2023 1,2,3,4
Programming Assignment 3 (A3) 15 % 28/05/2023 29/06/2023 1,2,3,4,5,6
Participation (P) 3 % 26/05/2023 29/05/2023 1,2,3,4,5,6
Mid-Term Exam (M) 10 % 27/03/2023 30/03/2023 1,2,3
Final Exam (E) 50 % * * 1,2,3,4,5,6

* If the Due Date and Return of Assessment date are blank, see the Assessment Tab for specific Assessment Task details

Policies

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:

Assessment Requirements

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.

Participation

Participation is worth 3% of your course mark. Attending and participating in 4 of the first 5 labs will result in the Engagement Hurdle being waived. Alternatively, achieving a mark of at least 30% on the mid-term exam satisfies the Engagement Hurdle. Failure to satisfy the Engagement Hurdle will result in a grade of NCN. The Engagement Hurdle may also be waived following granting of Special Consideration.

Examination(s)

There will be two exams: a mid-term exam and a final exam. The mid-term exam is worth 10% of the course mark and is redeemable via the final exam. The final exam is worth 50% of the course mark. Thus, the final course mark (%) F is calculated as:

F = A1 * 10% + A2 * 12% + A3 * 15% + P * 3% + max(M,E) * 10% + E * 50%

where A1, A2, A3, P, M, E are the percentage of the available marks achieved for each assessment item.


Examinable material comprises the contents of lectures, labs, and assignments, except where otherwise noted. Material covered in guest lectures (by other than course staff) is not examinable.

Assessment Task 1

Value: 10 %
Due Date: 09/04/2023
Return of Assessment: 26/04/2023
Learning Outcomes: 1,2,3

Programming Assignment 1 (A1)

Assignment 1 contains a Part A which you may submit earlier than the rest of the assignment. Tutors will return feedback for this along with an indicative mark. This mark will not be used to calculate your final mark on the assignment, allowing you to use this feedback to improve your full assignment. We strongly recommend you make use of this feedback loop. Assignment 1 will involve modifying a provided Haskell program, and a written report.

Assessment Task 2

Value: 12 %
Due Date: 30/04/2023
Return of Assessment: 17/05/2023
Learning Outcomes: 1,2,3,4

Programming Assignment 2 (A2)

Assignment 2 will involve modifying a provided Haskell program, and a written report. Marks will also be given for code style and written unit tests. The primary programming technique assessed in this assignment will be recursion.

Assessment Task 3

Value: 15 %
Due Date: 28/05/2023
Return of Assessment: 29/06/2023
Learning Outcomes: 1,2,3,4,5,6

Programming Assignment 3 (A3)

Assignment 3 will involve modifying a provided Haskell program, and a written report. Marks will also be given for code style and written unit tests. This assignment will ask that you show some creativity in designing a program that excels at a given task.

Assessment Task 4

Value: 3 %
Due Date: 26/05/2023
Return of Assessment: 29/05/2023
Learning Outcomes: 1,2,3,4,5,6

Participation (P)

Participation marks are gained in the labs; students get one mark for each lab they participate in by actively engaging and demonstrating (this requires attendance), and one mark for submission of genuine attempts at each set of lab exercises. Note that the engagement marks, and not the submission marks, across the first five labs, will be used to waive the Engagement Hurdle (see the Mid-Term Exam assessment for details). Your overall marks from this assessment will be counted from your ten best labs.

Assessment Task 5

Value: 10 %
Due Date: 27/03/2023
Return of Assessment: 30/03/2023
Learning Outcomes: 1,2,3

Mid-Term Exam (M)

The mark for the Mid-term Exam is redeemable via the Final Exam. This means that, if your Final Exam mark exceeds your Mid-term Exam mark, then your Mid-Term Exam mark will be worth 0% and your Final Exam will be worth 60%. Otherwise, the Mid-Term Exam is worth 10% of your mark and the Final Exam 50%.


The mid-term exam is a hurdle, passed by achieving at least 30%. However, because this is an introductory course, we will waive this hurdle for any student who can demonstrate their engagement with the course by attending and participating (see the Participation assessment for details) in at least four of the first five labs. Because this hurdle can be achieved via engagement we call this hurdle the Engagement Hurdle, and strongly suggest that you avoid this hurdle by attending and participating in labs.

Assessment Task 6

Value: 50 %
Learning Outcomes: 1,2,3,4,5,6

Final Exam (E)

The Final Exam is a hurdle. You will not pass the course, except perhaps with supplementary assessment, unless you score at least 40% in the final exam. Note that your mark for the Mid-Term exam will not be used to determine whether you have passed the final exam hurdle.


Given that exams may be held online on your personal computer, we will need to gain assurance that students' exams have been conducted with academic integrity. In this case, all students will attend a short interview with tutors where they answer simple questions about their exam answers. If students cannot answer these questions, an initial review process will begin to investigate whether a breach of academic integrity, such as plagiarism, has occurred. The result of this investigation has potential to effect your final exam mark.

Academic Integrity

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.

Online Submission

Submission of labs and programming assignments will be via the ANU CECS Teaching GitLab (https://gitlab.cecs.anu.edu.au/) as approved by the CECS Associate Dean (Education).

Exams will also use online submission of free-form text, scans of handwritten text, questions and answers via Web-based forms, and answers to programming questions, via online systems including Wattle (https://wattle.anu.edu.au), ANU CECS GitLab (https://gitlab.cecs.anu.edu.au), or GradeScope (https://gradescope.com), as approved by the CECC Associate Dean (Education). Automated plagiarism detection will be used on all submissions to assist with discovery of possible academic misconduct.

Hardcopy Submission

For some forms of assessment (hand written assignments, art works, laboratory notes, etc.) hard copy submission is appropriate when approved by the Associate Dean (Education). Hard copy submissions must utilise the Assignment Cover Sheet. Please keep a copy of tasks completed for your records.

Late Submission

Late submission of assessment items is not permitted without an approved extension. A mark of 0 will be awarded for late submission.

Referencing Requirements

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.

Returning Assignments

Assignment marks and feedback will given online.

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

Resubmission of assignments will not be permitted without grant of Special Consideration.

Privacy Notice

The ANU has made a number of third party, online, databases available for students to use. Use of each online database is conditional on student end users first agreeing to the database licensor’s terms of service and/or privacy policy. Students should read these carefully. In some cases student end users will be required to register an account with the database licensor and submit personal information, including their: first name; last name; ANU email address; and other information.
In cases where student end users are asked to submit ‘content’ to a database, such as an assignment or short answers, the database licensor may only use the student’s ‘content’ in accordance with the terms of service – including any (copyright) licence the student grants to the database licensor. Any personal information or content a student submits may be stored by the licensor, potentially offshore, and will be used to process the database service in accordance with the licensors terms of service and/or privacy policy.
If any student chooses not to agree to the database licensor’s terms of service or privacy policy, the student will not be able to access and use the database. In these circumstances students should contact their lecturer to enquire about alternative arrangements that are available.

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).

Dr Ranald Clouston
u4982397@anu.edu.au

Research Interests


Dr Ranald Clouston

By Appointment
Dr Nisansala Yatapanage
nisansala.yatapanage@anu.edu.au

Research Interests


Dr Nisansala Yatapanage

By Appointment
Donovan Crichton
donovan.crichton@anu.edu.au

Research Interests


Donovan Crichton

By Appointment

Responsible Officer: Registrar, Student Administration / Page Contact: Website Administrator / Frequently Asked Questions