Course Outline

  COMP1100 COMP1130
Mode of Delivery on campus  
Prerequisites Mathematics comparable to at least ACT Maths Methods major or NSW 2 unit maths or equivalent. Mathematics comparable to at least ACT Specialist Mathematics Major/Minor or NSW Mathematics Extension 1 or equivalent.
Incompatible Courses COMP1130 COMP1100
Co-taught Courses COMP1130 (Semester 1) COMP1100 (Semester 1)
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 1 Monday, Physics Lecture Theatre, 3:30pm–5:00pm  
Lecture 2 Thursday, Cultural Centre Cinema 1.02, 8:30am–10:00am  
Course Convenor Dr Ranald Clouston  
Second Examiner Prof Tony Hosking  

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.

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

Upon successful completion of COMP1130, students will also be able to:

  1. Understand and discuss the fundamental mathematical concepts underlying functional programming.
  2. Use formal proof and structural induction to reason about the correctness of functional programs.
  3. Understand and discuss the significance of different evaluation strategies, including laziness, for the computational behaviour of functional programs.

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
Engagement hurdle 0%, hurdle First five weeks or Week 6 End of Week 5 or Week 6
First assignment 10% Part A: Week 4
Part B: Week 6
Part A: Week 5
Part B: Week 7
Second assignment 12% Week 9 Week 11
Third assignment 15% Week 12 During Examination Period
Participation 3% Weekly Weekly
Mid-term exam 10% Week 6: 7pm, 28 August Week 6
Final exam 50%, hurdle Examination Period After Examination Period

Early and sustained programming practice is essential for success in this course. You may pass the Engagement Hurdle by attending and participating in at least four of the first five labs. If you do not do this, then you must receive at least 30% in the Mid-term exam. We strongly suggest that you pass this hurdle by attending and participating in labs.

Participation marks 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.

Assignment 1 contains a Part A which you will be asked to 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, allowing you to use this feedback to improve your full assignment. We strongly recommend you make use of this feedback loop.

The mark for the Mid-term Exam is redeemable via the Final Exam. Thus, your final mark prior to moderation will be calculated as follows:

where , , , 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 and pass the Engagement Hurdle and pass the Final Exam Hurdle by getting at least 40/100 on the final exam. Final marks are moderated within the course and by a Research School of Computer Science examiners meeting. Students receiving a final mark of 45%-49%, or who would have received 45% were it not for failing a hurdle, will be offered supplementary assessment as per ANU rules.
  • All exams are “closed books/closed notes”: no external materials will be permitted.
  • 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.
  • COMP1130 extends COMP1100, with extra lectures (content is examinable) and extended requirements for assignments and exams.
  • 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 Piazza 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 convenor and second examiner are always happy to hear feedback, whether anonymously, privately, or publicly, preferably via Piazza, but also personally in our offices.


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

No external materials are permitted in examination rooms.

The examinations are conducted in labs on laboratory machines, with answers submitted by Web form. You will login using your ANU id and password into a secure environment. The question paper will be made available in the form of an HTML form, in which to enter answers to the questions. All software development tools relevant to the couurse that have been available in the labs during the semester are also available in the exams. However, access to outside materials are blocked under closed exam conditions.

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 Piazza forum at

Assessment Requirements

Assessment Tasks


There will be three 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 two formal examinations: a one hour mid-term examination and a three hour 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 Convener may grant extensions for assessment pieces that are not examinations or take-home examinations. If you need an extension, you must request it 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.

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

Updated:  15 Aug 2019/ Responsible Officer:  Director, RSCS/ Page Contact:  Course Convenor