COMP SCI 2204 - Advanced Programming Paradigms

North Terrace Campus - Semester 2 - 2018

A selection of topics from the following: Fundamental models of computation, illustrated by the lambda calculus. Different approaches to programming: functional and logic paradigms. Fundamental concepts of programming languages, including abstraction, binding, parameter passing, scope, control abstractions. Programming models expressed via Scheme: substitution model; map/reduce programming; environment model; object oriented model; a compositional programming model. Examples in application: map/reduce programming in Google and with Hadoop; flow-oriented programming for composition of web-services. Cloud computing platforms and programming models.

  • General Course Information
    Course Details
    Course Code COMP SCI 2204
    Course Advanced Programming Paradigms
    Coordinating Unit Computer Science
    Term Semester 2
    Level Undergraduate
    Location/s North Terrace Campus
    Units 3
    Contact 3 hours per week
    Available for Study Abroad and Exchange Y
    Prerequisites One of COMP SCI 1007, COMP SCI 1009, COMP SCI 1103, COMP SCI 1203, COMP SCI 2103 or COMP SCI 2202
    Course Staff

    Course Coordinator: Dr Mingyu Guo

    The lecturer for Advanced Programming Paradigms in Semester 2, 2017 is:

    Dr Andrew Wendelborn


    Course Timetable

    The full timetable of all activities for this course can be accessed from Course Planner.

  • Learning Outcomes
    Course Learning Outcomes
    On successful completion of this course students will be able to:

    1 Explain the nature of functional programming
    2 Explain the relationships between functional, imperative, object oriented and logic programming
    3 Describe programming language syntax, semantics and interpretation
    4 Discuss how the functional paradigm supports data science and parallel computing
    5 Explain the use of functional programming in practice
    6 Choose and interpret discipline related documentation
    7 Use clear communication of programming solutions, and of their derivation
    8 Solve new problems.

    The above course learning outcomes are aligned with the Engineers Australia Stage 1 Competency Standard for the Professional Engineer.
    The course is designed to develop the following Elements of Competency: 1.1   1.2   1.3   1.4   1.5   1.6   2.1   2.2   2.3   2.4   3.1   3.2   3.3   3.4   3.5   3.6   

    University Graduate Attributes

    This course will provide students with an opportunity to develop the Graduate Attribute(s) specified below:

    University Graduate Attribute Course Learning Outcome(s)
    Deep discipline knowledge
    • informed and infused by cutting edge research, scaffolded throughout their program of studies
    • acquired from personal interaction with research active educators, from year 1
    • accredited or validated against national or international standards (for relevant programs)
    1-5, 8
    Critical thinking and problem solving
    • steeped in research methods and rigor
    • based on empirical evidence and the scientific approach to knowledge development
    • demonstrated through appropriate and relevant assessment
    1-4, 8
    Teamwork and communication skills
    • developed from, with, and via the SGDE
    • honed through assessment and practice throughout the program of studies
    • encouraged and valued in all aspects of learning
    5, 7, 8
    Career and leadership readiness
    • technology savvy
    • professional and, where relevant, fully accredited
    • forward thinking and well informed
    • tested and validated by work based experiences
    Intercultural and ethical competency
    • adept at operating in other cultures
    • comfortable with different nationalities and social contexts
    • able to determine and contribute to desirable social outcomes
    • demonstrated by study abroad or with an understanding of indigenous knowledges
    6, 8
    Self-awareness and emotional intelligence
    • a capacity for self-reflection and a willingness to engage in self-appraisal
    • open to objective and constructive feedback from supervisors and peers
    • able to negotiate difficult social situations, defuse conflict and engage positively in purposeful debate
  • Learning Resources
    Required Resources
    There is one textbook for this course.

    This text applies only to the functional programming section of the course.

    Abelson, H. and Sussman,G.J with Sussman, J., Structure and Interpretation of Computer Programs, 2nd Ed. (MITPress,1996).

    The textbook is available (in html format) at: . However, the printed edition, though it has the same content, is more convenient to use.

    Recommended Resources
    See above.
    Online Learning
    The course will use Canvas and Echo 360 for various activities, especially discussion forums.

    Details will be provided in lectures.

    All general questions relating to the course and its content should be posted to the course forum. Any changes to assignment requirements will be posted to this forum. Students are expected to check the forum regularly for announcements relating to the course.

    All course materials including lecture slides, course notes, assignment descriptions and tutorials, will be available on the course website.

    IMPORTANT:  we will provide online, in advance, material for the next lectures.

    We want you to review this prior to lectures.

    These will be primarily videos, as well as readings and problems from the textbook.

    We expect you to have worked through the posted materials before the lectures. During the lectures, we will review selected aspects, ask questions about the material, and discuss these in class. Come prepared!

    We will also post study guides and review questions to help you with preparation.

  • Learning & Teaching Activities
    Learning & Teaching Modes
    In this course, you will be exposed to different programming paradigms, and relationships between them.

    Understanding of these concepts will be reinforced in several different ways. Firstly, we will use the lecture sessions in a participatory and interactive manner to encourage thinking through, and more immediate understanding, of new concepts. Secondly, there will be several assignments related to new concepts as they are introduced; the assignments will involve both writing programs (in, for example, Scheme) and explaining how you developed that code. Thirdly, we will use tutorial sessions to reinforce areas of difficulty, and to explore some aspects in greater depth.

    We will also post questions each week, with the lecture material. These questions are intended to be done in conjunction with lecture preparation, and will be designed to reinforce understanding needed both for classroom discussion, and for the assignments.

    Some aspects of the assignments are challenging, and will give a good understanding of how the ideas can be used in practice.

    The information below is provided as a guide to assist students in engaging appropriately with the course requirements.

    Advanced Programming Paradigms is a 3 unit course. The expectation is that students will devote at least 156 hours to a 3 unit course, including contact hours.
    Learning Activities Summary
    The outline of the lecture component of the course will be similar to the following (it is subject to change, the actual schedule will be notified via the Schedule section of the course webpage):

    ·       Introduction 

    The following lectures explore the functional programming paradigm, and compare it to conventional state-oriented programming; we use the programming language Scheme to do this: 

    ·       Elements of functional programming

    ·       Efficiency

    ·       Higher Order Functions

    ·       Data Abstraction

    ·       Lambda Calculus

    o   A model of computation that underlies functional programming

    ·       Modelling State

    ·       Environments

    The following lectures explore relationships to big data and the cloud, parallel computing and so on:

    ·       Streams and Networks of Processes

    ·       Functional Programming, Parallel Computing;

    ·       Big Data and the Cloud

    ·       The Google Map Reduce Programming Model

    ·       Functional Programming in Practice

    o   Where and how the paradigm is applied

    ·       An Interpreter for Scheme in Scheme

    ·       An Introduction to Logic Programming

    ·       Review

    Fortnightly tutorials will be held, commencing week 3. Again, see course web and Moodle pages for schedule and content. We give indicative concept areas below, but the actual content may vary.

    • Tutorial 1 - Week 3 – Scheme Programming Exercises.
    • Tutorial 2 – Week 5 – Data Abstraction and Higher-Order Functions.
    • Tutorial 3 – Week 7 – Streams and Lambda Calculus.
    • Tutorial 4 – Week 9 – Lambda Calculus and Logic Programming.
    • Tutorial 5 – Week 11 – Review Topics.
    Specific Course Requirements
    Not applicable.
    Small Group Discovery Experience
    Not applicable.
  • Assessment

    The University's policy on Assessment for Coursework Programs is based on the following four principles:

    1. Assessment must encourage and reinforce learning.
    2. Assessment must enable robust and fair judgements about student performance.
    3. Assessment practices must be fair and equitable to students and give them the opportunity to demonstrate what they have learned.
    4. Assessment must maintain academic standards.

    Assessment Summary
    Assessment Task Weighting (%) Individual/ Group Formative/ Summative
    Due (week)*
    Hurdle criteria Learning outcomes CBOK Alignment**
    Exam 60 Individual Summative Min 40% 1. 2. 3. 4. 5. 6. 7. 8. 1.1 1.2 3.1 3.2 4.1
    Assignments 30 Individual Summative Weeks 2-12 1. 2. 3. 4. 5. 6. 7. 8. 1.1 1.2 2.2 3.1 4.1
    Quizzes 10 Individual Summative Weeks 3-13 1. 2. 3. 4. 5. 6. 7. 8. 1.1 1.2
    Total 100
    * The specific due date for each assessment task will be available on MyUni.
    This assessment breakdown complies with the University's Assessment for Coursework Programs Policy.
    This course has a hurdle requirement. Meeting the specified hurdle criteria is a requirement for passing the course.

    **CBOK is the Core Body of Knowledge for ICT Professionals defined by the Australian Computer Society. The alignment in the table above corresponds with the following CBOK Areas:

    1. Problem Solving
    1.1 Abstraction
    1.2 Design

    2. Professional Knowledge
    2.1 Ethics
    2.2 Professional expectations
    2.3 Teamwork concepts & issues
    2.4 Interpersonal communications
    2.5 Societal issues
    2.6 Understanding of ICT profession

    3. Technology resources
    3.1 Hardware & Software
    3.2 Data & information
    3.3 Networking

    4. Technology Building
    4.1 Programming
    4.2 Human factors
    4.3 Systems development
    4.4 Systems acquisition

    5.  ICT Management
    5.1 IT governance & organisational
    5.2 IT project management
    5.3 Service management 
    5.4 Security management
    Assessment Related Requirements

    In order to pass, students must achieve an overall passing grade and not score less than 40% in the hurdle component. The examination is designated as the hurdle component for this course; the coursework component comprises the assignments and other activities described above.
    Assessment Detail
    The coursework component includes practical assignments and a written report. Assignment descriptions will be made available on the course website.

    The assignments contribute 30% to course assessment: the relative contribution of each assignment will be advised at the time.

    Written exam: this will be a two-hour closed book exam. Questions will test understanding of concepts presented during the course, and ability to apply them to problems.
    All programming submissions will be made through the school's web submission gateway, available on the school web site ( Other assignments may be submitted through other electronic means that will be clearly identified in the assignment description. No physical submissions of work will be accepted unless specifically requested by the lecturer.
    Course Grading

    Grades for your performance in this course will be awarded in accordance with the following scheme:

    M10 (Coursework Mark Scheme)
    Grade Mark Description
    FNS   Fail No Submission
    F 1-49 Fail
    P 50-64 Pass
    C 65-74 Credit
    D 75-84 Distinction
    HD 85-100 High Distinction
    CN   Continuing
    NFE   No Formal Examination
    RP   Result Pending

    Further details of the grades/results can be obtained from Examinations.

    Grade Descriptors are available which provide a general guide to the standard of work that is expected at each grade level. More information at Assessment for Coursework Programs.

    Final results for this course will be made available through Access Adelaide.

  • Student Feedback

    The University places a high priority on approaches to learning and teaching that enhance the student experience. Feedback is sought from students in a variety of ways including on-going engagement with staff, the use of online discussion boards and the use of Student Experience of Learning and Teaching (SELT) surveys as well as GOS surveys and Program reviews.

    SELTs are an important source of information to inform individual teaching practice, decisions about teaching duties, and course and program curriculum design. They enable the University to assess how effectively its learning environments and teaching practices facilitate student engagement and learning outcomes. Under the current SELT Policy ( course SELTs are mandated and must be conducted at the conclusion of each term/semester/trimester for every course offering. Feedback on issues raised through course SELT surveys is made available to enrolled students through various resources (e.g. MyUni). In addition aggregated course SELT data is available.

  • Student Support
  • Policies & Guidelines
  • Fraud Awareness

    Students are reminded that in order to maintain the academic integrity of all programs and courses, the university has a zero-tolerance approach to students offering money or significant value goods or services to any staff member who is involved in their teaching or assessment. Students offering lecturers or tutors or professional staff anything more than a small token of appreciation is totally unacceptable, in any circumstances. Staff members are obliged to report all such incidents to their supervisor/manager, who will refer them for action under the university's student’s disciplinary procedures.

The University of Adelaide is committed to regular reviews of the courses and programs it offers to students. The University of Adelaide therefore reserves the right to discontinue or vary programs and courses without notice. Please read the important information contained in the disclaimer.