Course Outline

  COMP1100
Mode of Delivery on campus
Prerequisites Mathematics comparable to at least ACT Maths Methods major or NSW 2 unit maths or equivalent.
Incompatible Courses COMP1130 (Semester 1)
Co-taught Courses COMP1130 (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 Tuesday, Leonard Huxley T, 10:00–11:30am
Lecture 2 Thursday, R N Robertson Theatre, 3:00–4:30pm
Course Convenor Dr Katya Lebedeva
Second Examiner Dr Ranald Clouston

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 addresses both functional and imperative programming paradigms.

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 structural induction and proof, introduction 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 imperative programming as an alternative paradigm to functional programming, highlighting similarities and contrasting differences. Students learn the basic ingredients of imperative programs: mutable variables, sequencing, conditionals, iteration, functions, eager evaluation, and side effects.

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 simple problems.
  2. Understand basic types and the benefits of static typing.
  3. Distinguish language definition from implementation, syntax and parsing from semantics and evaluation.
  4. Describe, understand and evolve programs, via documentation, testing, and debugging.
  5. Discuss, use, and apply the fundamentals of data structures, algorithms, and design; create, implement, and debug algorithms for solving simple problems, including recursively, using divide-and-conquer, and via decomposition.
  6. Discuss basic algorithmic analysis for simple algorithms; determine appropriate algorithmic approaches to a problem (brute-force, greedy, divide-and-conquer, recursive backtracking, heuristic, dynamic programming).
  7. Describe and apply alternative computational paradigms to simple problems.
  8. Understand the legal context for protection of software as intellectual property.

Assessment Summary

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

Task Value Available Due Dates Date for Return of Assessment
Diversity module 0%, hurdle      
First assignment 10% Week 4 Part A: Monday Week 5 Week 7
    Week 4 Part B: Monday Break Week 1 Week 7
Second assignment 12% Break Week 2 Tuesday Week 9 Week 11
Third assignment 15% End of Week 9 Week 12 Second week of final exam period
Participation 3%   Weekly Weekly
Mid-term exam 10%   Week 6, August 28 August 31
Final exam 50%, hurdle   Examination Period to be announced

The marks for the first assignment , participation (in labs, on quiz questions, etc.), and the mid-term exam are 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.

Notes

  • Late assignments will not be accepted. There will be no extensions. Note that assignment due dates and return dates may vary from the schedule advertised above.
  • Students must get a minimum final mark of 50% to pass the course and at least 40/100 on the final exam. Students not achieving a minimum final exam mark of 40/100 will receive a final grade of NCN (the final exam is a hurdle assessment). Final marks are moderated within the course and by a Research School of Computer Science examiners meeting. Students receiving a final mark of N45%-N49% 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.
  • Participation is based on your demonstrated engagement with the course in lectures and labs, via interaction with your tutor and lecturer, on lab exercises and lecture quizzes.
  • Plagiarism will be handled according to ANU’s policies and procedures.
  • All students must participate in the module (comprising 1 lecture and assessment) on diversity and professional ethics, which is an essential outcome of the course. For example, the ACM’s CS2013: Curriculum Guidelines for Undergraduate Programs in Computer Science has the following summary of curriculum for professional practice:

    The education that undergraduates in computer science receive must adequately prepare them for the workforce in a more holistic way than simply conveying technical facts. Indeed, soft skills (such as teamwork, verbal and written communication, time management, problem solving, and flexibility) and personal attributes (such as risk tolerance, collegiality, patience, work ethic, identification of opportunity, sense of social responsibility, and appreciation for diversity) play a critical role in the workplace. Successfully applying technical knowledge in practice often requires an ability to tolerate ambiguity and to negotiate and work well with others from different backgrounds and disciplines. These overarching considerations are important for promoting successful professional practice in a variety of career paths.

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.

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

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 you collaborators are 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.

Late Policy

The late policy for this course is as follows:

  • Late submissions will not be accepted (will incur a 100% penalty)
  • There are no exceptions to this rule except under compelling circumstances
  • If you believe your circumstances are compelling please contact the course convenor to discuss your options.

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 course 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 piazza.com/anu.edu.au/winter2018/comp1100.


Course Schedule

This schedule is indicative. Students will be informed well in advance of any substantive changes to the schedule.

Week Summary of Activities Assessment
0 Sign up for labs on Streams!  
1 Foundations. Lab 1: ANU environment
2 Abstraction. Types. Functions. Lab 2: First functions
3 Pattern matching. Recursion. Lab 3: Functions and patterns
4 Lists. Testing. Lab 4: Functions and pictures
5 Higher Order Functions. Patterns of computation. Function composition and function application. Lab 5: Lists & patterns
6 Typeclasses. Modules. Lab 6: Recursion
Mid-term Exam Tuesday August 28
Assignment 1 Part B due (Monday Break Week 1)
7 Trees. Game Trees. Lab 7: Typeclasses and polymorphism
8 Trees. Game Trees. Lab 8: Trees
9 Sorting Algorithms. Complexity. Lab 9: Higher order functions
Assignment 2 due Tuesday October 2
10 Abstract data types. Lab 10: Functional decomposition
11 IO. Lab 11: Testing
12 Revision. Lab 12: Complexity and efficiency
Assignment 3 due
  Examination Period. Final Exam

Assessment Requirements

Assessment Tasks

Participation

Students will be assessed on their participation in labs and lectures, via questions, quizzes, and lab exercises.

Assignments

There will be three Haskell programming assignments. Assignments 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 mid-semester examination and a final examination.

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:  21 Aug 2018/ Responsible Officer:  Director, RSCS/ Page Contact:  Course Convenor