COMP1100
Mode of Delivery off campus for all students
Prerequisites Mathematics comparable to at least ACT Maths Methods major or NSW 2 unit maths or equivalent.
Incompatible Courses COMP1130
Co-taught Courses  
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 Wednesday, online, 05:00pm–06:00pm
Lecture 2 Thursday, online, 10:00am–11:00am
Lecture 3 Friday, online, 9:00am–10:00am
Drop-ins Thursday, and Friday. 4pm-5pm
Course Convenor Dr Artem Lenskiy
Second Examiner Prof Tony Hosking
Additional Convenor Dr Jooyoung Lee

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.

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 (1100 only) 0%, hurdle First five weeks End of Week 5 or start of Week 6
First assignment \((A_1)\) 10% Part A: end of Week 4
Part B: end of Week 6
Part A: Start of Week 6
Part B: Week 7
Second assignment \((A_2)\) 12% End of Week 8 Week 11
Third assignment \((A_3)\) 15% End of Week 12 During Examination Period
Participation \((P)\) 3% Weekly Weekly
Mid-term exam \((M)\) 10% Week 5 Start of Week 6
Final exam \((E)\) 50%, hurdle Examination Period After Examination Period

Early and sustained programming practice is essential for success in this course. COMP1100 students 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 \((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.

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 \((M)\) is redeemable via the Final Exam. Thus, your final mark prior to moderation will be calculated as follows:

\[\textsf{final mark}\% = A_1 \times 10\% + A_2 \times 12\% + A_3 \times 15\% + P \times 3\% + \textsf{max}(M, E) \times 10\% + E \times 50\%\]

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

Notes

  • 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 online and “open books/notes”.
  • 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.

Feedback

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 http://unistats.anu.edu.au/surveys/selt/students and http://unistats.anu.edu.au/surveys/selt/results/learning.

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.

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. You can read the University’s education policies and an explanatory glossary at: https://policies.anu.edu.au/ppl/index.htm.

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 https://cs.anu.edu.au/courses/comp1100.

The primary medium of communication among students and course staff will be the Piazza forum at https://piazza.com/anu.edu.au/spring2020/comp1100/.


Assessment Requirements

Assessment Tasks

Assignments

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.

Examinations

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 https://gitlab.cecs.anu.edu.au.

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 http://www.anu.edu.au/students.

Updated:    02 Feb 2021 / Responsible Officer:    Director, RSCS / Page Contact:    Course Convenor