Mode of Delivery in-person
Prerequisites Mathematics comparable to at least ACT Maths Methods major or NSW 2 unit maths or equivalent.
Incompatible Courses COMP1130
Co-taught Courses COMP1130 (Semester 1 only)
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.
Lecture A Tuesday, Manning Clark Hall Room 1.04 Kambri Cultural Centre, 4:00pm–5:00pm
Lecture B Wednesday, Manning Clark Hall Room 1.04 Kambri Cultural Centre, 4:00pm–5:00pm
Lecture C Friday, Llewellyn Hall, School of Music Building 100, 9:00pm–10:00am
Course Convenors Dr. Ranald Clouston and Dr. Nisansala Yatapanage

Course Overview

Course Description

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.

Learning Outcomes

Upon successful completion of COMP1100, the student will be able 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 brute-force, greedy, divide-and-conquer, recursive backtracking, heuristic, dynamic programming).
  6. Understand and apply the concepts of parametric and ad-hoc polymorphism.

Assessment Summary

Marks accrue from several assessment tasks throughout the course, weighted as follows, but subject to moderation:

Task Value Due Dates Date for Return of Assessment
First assignment \((A_1)\) 10% 14/4/24 1/5/24
Second assignment \((A_2)\) 17% 19/5/24 5/6/24
Participation \((P)\) 3% Weekly Weekly
Final exam \((E)\) 70% Examination Period After Examination Period

Early and sustained programming practice is essential for success in this course.

Participation marks \((P)\) are gained in the labs; students get one mark for each lab that they attend and participate in, and one mark for submission of genuine attempts at each set of lab exercises. Your marks will be counted from your ten best labs.

Your final mark prior to moderation will be calculated as follows:

\[\textsf{final mark}\% = A_1 \times 10\% + A_2 \times 17\% + P \times 3\% + E \times 70\%\]

where \(A_i\), \(P\) and \(E\) are the percentage of the available marks achieved for each assessment item.


  • Late assignments will not be accepted without a compelling and properly documented reason for absence provided to the convenor, e.g. sickness with a medical note. Note that assignment due dates and return dates may vary slightly from the schedule advertised above.
  • Failure to attend labs will result in failure to receive the first Participation mark unless there is a compelling reason for absence, provided to the relevant tutor. You may be asked to provide documentation.
  • In order to pass the course after the final exam, students must get a minimum final mark of 50% across the course. Final marks are moderated within the course and by a School of Computing examiners meeting. Students receiving a final mark of 45%-49%, or who would have received at least 45% were it not for failing a hurdle, will be offered supplementary assessment as per ANU rules.
  • The final exam will be closed book and held in-person.
  • The examinable material comprises the contents of lectures, labs, and assignments, as well as the relevant chapters of the textbook. Material covered in guest lectures (by other than course staff) is not examinable.
  • Plagiarism will be handled according to ANU’s policies and procedures.


Staff Feedback

Students will receive feedback in the following forms in this course:

  • written comments
  • verbal comments
  • on-line (via our discussion forum and GitLab)
  • via e-mail
  • to the whole class
  • to small groups (tutorials, individuals, study groups, focus groups)

Student Feedback

ANU is committed to the demonstration of educational excellence and regularly seeks feedback from students. One of the key formal ways students can provide feedback is through Student Experience of Learning Support (SELS) surveys. The feedback given in these surveys is anonymous and provides the Colleges, University Education Committee and Academic Board with opportunities to recognise excellent teaching, and opportunities for improvement.

For more information on student surveys at ANU and reports on the feedback provided on ANU courses, go to and

Moreover, the course convenors are always happy to hear feedback, whether anonymously, privately, or publicly, preferably via Ed Discussions.


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. You can read the University’s education policies and an explanatory glossary at:

Other key policies include:

Academic Integrity

Students are expected to know their responsibilities with respect to academic integrity. Please read the ANU policies on academic honesty and plagiarism.

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. After you discuss ideas with anybody else, wait a few hours before you start writing your own submission.

Detection is very likely (even though it might not always appear so from an individual perspective), and the consequences of plagiarism are harsh. Please help to make this a clean course which focuses entirely on the learning process and not on policing.

A student in this course is expected to be able to explain and defend any submitted assessment item. 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 two forms of assessment may trigger an investigation for academic misconduct.

Examination material or equipment

The final exam will be closed book and held in-person.

Information about how to participate in exams will be given via lectures and in writing close to the date. As with assignments, you must be able to explain and defend your work in the exam, and there may investigations into suspected academic misconduct.

The primary source of information on the course will be the course Web page at

The primary medium of communication among students and course staff will be the Ed Discussions forum at

Assessment Requirements

Assessment Tasks


There will be two Haskell programming assignments. Assigments are to be completed individually (all program source code submitted on the assignment must be authored individually by the student, or the origin and authorship acknowledged and properly cited). Assignments will be checked for originality using software tools for detecting program similarity.

Programs will be assessed for correctness and completeness against problem specifications, and for originality. Students will also be assessed on their coding style and algorithmic choices. Each student will write a report documenting their solution to the problem, citing all source materials in developing their solution, and attesting to the originality of that solution.


The course will have one formal examination: the final examination. Both examinations will take place on computers.

Assignment Submission

Assignments are submitted via the ANU CECS Teaching GitLab at

Extensions and Penalties

Extensions and late submission of assessment pieces are covered by the Student Assessment (Coursework) Policy and Procedure.

The Course Conveners may grant extensions for assessment pieces that are not examinations or take-home examinations. If you need an extension, you must request it via the Assessment Extension Request App 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. The Course Convenors will not accept extension requests unless they are submitted using the Assessment Extension Request App.

No submission of assessment tasks without an extension after the due date will be permitted. If an assessment task is not submitted by the due date, a mark of 0 will be awarded.

Returning Assignments

Feedback on student work will be via Streams, GitLab, and e-mail.

Resubmission of Assignments

Students may not resubmit work after the due date.

Referencing Requirements

Students must cite all sources of materials used in completing their assignments.

Support for Students

The University offers a number of support services for students. Information on these is available online from

bars search times arrow-up