COMP SCI 3009NA - Advanced Programming Paradigms

Ngee Ann-Adelaide Education Centre - Trimester 2 - 2015

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. Introduction to parallel computing: data parallelism, Java threads, and relationship to distributed computing. 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 3009NA
    Course Advanced Programming Paradigms
    Coordinating Unit School of Computer Science
    Term Trimester 2
    Level Undergraduate
    Location/s Ngee Ann-Adelaide Education Centre
    Units 3
    Available for Study Abroad and Exchange N
    Course Description 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. Introduction to parallel computing: data parallelism, Java threads, and relationship to distributed computing. 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
    Course Staff

    Course Coordinator: Dr Andrew Wendelborn

    Course Timetable

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


    Lecture timetable available via Moodle forums at
    http://forums.cs.adelaide.edu.au/

    The full timetable of all activities for this course can be accessed from the Course Planner at https://access.adelaide.edu.au/courses/search.asp
     

     

  • Learning Outcomes
    Course Learning Outcomes



    The learning objectives for Advanced Programming Paradigms are to develop an understanding of:

    1. The nature of functional programming.
    2. Relationships between functional, imperative and object oriented programming models.
    3. The nature of parallel computing, and parallel programming models.
    4. The use of parallel and functional programming in practice.

    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)
    Knowledge and understanding of the content and techniques of a chosen discipline at advanced levels that are internationally recognised. 1,2,3,4
    The ability to locate, analyse, evaluate and synthesise information from a wide variety of sources in a planned and timely manner. 2,3
    An ability to apply effective, creative and innovative solutions, both independently and cooperatively, to current and future problems. 2,3
    A proficiency in the appropriate use of contemporary technologies. 1,2
    A commitment to continuous learning and the capacity to maintain intellectual curiosity throughout life. 1,2,3,4
  • 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. (MIT Press,1996).

    The textbook is available (in html format) at: http://mitpress.mit.edu/sicp/full-text/book/book.html. However, the printed edition, though it has the same content, is more convenient to use. The course concentrates, primarily, on the first half of the book.

    An interesting and  useful reference about Scala, which combines OO and functional programming, is:

    Horstmann, Cay, Scala for the Impatient, Addison-Wesley, 2012.

    Suggested reference books for the parallel programming part of the course:

     1.      Kaminsky, Alan, Building Parallel Programs (CEngage Learning, 2010).

     2. El-Rewini, H and Lewis, T.G, Distributed and Parallel Computing (Manning, 1997)  This reference is out of print but is available in the library.

    To support interaction and discussion during and between intensives, we will be using an online learning system during lectures (and at other times) to present multiple choice questions, and points for discussion. These questions will be used both for individual responses, and to drive group discussion during the lecture session. These questions, answers and discussion will be an important part of the learning process. Hence, it is important that all students be able to interact with the system during lectures. To do this, it will be beneficial to bring to the lectures a device capable of running a web browser, such as:

    ·       A laptop computer with a browser;

    ·       A tablet or smartphone.

    Access will be via wifi access points in the lecture theatre.



    Recommended Resources
    See above.
    Online Learning

    The  course uses a Moodle forum at:

     

    http://forums.cs.adelaide.edu.au/

     

    All general questions relating to the course and its content should be posted to this 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, above.

     

    As noted above, we will be using an online learning system during lectures to present multiple-choice questions, and points for discussion. This supports a much more interactive mode of learning. We will provide online materials supporting what is covered during lectures.  Some of these, we will ask you to review outside of the intensive. During the intensive sessions, we will ask questions about course material, for group discussion and problem solving. The online materials will be videos, readings and problems from the textbook, and quizzes (some to be completed outside the intensive).

     
    In addition, we may use a collaborative working platform (to be determined) for peer support groups, primarily for ongoing group discussion throughout the trimester (both during and outside of intensives). One important use of this will be to assist in organizing practical work – as there is often a shortage of lab capacity for the class, we may ask you to use these groups to help each other out with resources for practical work.


  • Learning & Teaching Activities
    Learning & Teaching Modes

    In this course, you will be exposed to different programming paradigms, and relationships between
    them, as well as introductory concepts in parallel programming.

     

    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 encouragethinking through, and more immediate understanding, of new concepts. Secondly, there will be several assignments related to new concepts as they areintroduced; the assignments will involve both writing programs (in, for example,  Scheme) and explaining how you developed that code. Thirdly, we will use discussion sessions to reinforce areas of difficulty, and to explore some aspects in greater depth.
     

    We will also use quizzes, both in-class and outside class times. These quizzes are intended tobe done in conjunction with lectures, and will be designed to reinforceunderstanding needed 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.
     





    Workload

    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 is expected to
    be as follows (any variation will be notified in advance via the Schedule
    section of the course webpage):

     

    •          Introduction

    •          Scheme: Elements of functional programming

    •          Scheme: Efficiency

    •          Scheme: Higher Order Functions

    •          Scheme: Data Abstraction; Modules, Composition and Generics

    •          Scheme: Modelling State

    •          Scheme: Environments

    •          Scheme: Streams

    •          Scheme: Networks of Processes

    •          Lambda Calculus

    •          Parallelism: Introduction

    •          Parallelism: Models; Data Parallelism

    •          Parallelism: Threads

    •          Parallelism: MPI

    •          Parallelism: Interconnection Networks

    •          Parallel Functional Programming

    •          The Google Map Reduce Programming Model

    •          Web Services; Cloud Computing

    •          Review


    Tutorials exercises will be provided. Again, see course web and
    Moodle pages for schedule and content. Below are indicative concept areas
    (subject to variation).

    •          Tutorial 1 -– Scheme Programming Exercises.

    •          Tutorial 2 –– Data Abstraction and Higher-Order Functions.

    •          Tutorial 3 –– Streams and Lambda Calculus

    •          Tutorial 4 –– Parallel Programming



    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

    The assessment for this subject consists of these items with the
    following weightings:

     

    Examination – 60%

    Coursework – 40%, comprising Assignments: 25%,
    and Other Activities – 15%, comprising
    Participation in discussion – 3%                       
    Quizzes – 5%                       
    Exercises – 7%      

                  
    The marks for participation in discussion will be awarded based on
    individual and group participation in activities during the intensives. There
    will also be online quizzes: for these, marks will be awarded for correct
    answers. There will also be assessable exercises, worth 7%: details will be
    provided during the course.

     

    See the course web page for due dates.



    Assessment Related Requirements
    In order to pass, students must achieve anoverall passing grade and not score less than 40% in any designated component.The examination and the coursework are designated as the two components forthis course; the coursework component (40% of the total assessment) comprisesthe assignments and other activities described above.
    Assessment Detail


    The coursework component includes several practical assignments. Students enrolled in the Post Graduate offering, COMP SCI 7031, will be required to submit an additional report as part of one of the practical assignments. Assignment descriptions will be made available on the course website.

    The assignments contribute 25% 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 throughout the course, and ability to apply them to problems.

    Submission



    All programming submissions will be made through the school's web submission gateway, available on the school web site (http://www.cs.adelaide.edu.au). 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.


    The School of Computer Science observes a strict lateness policy. Your mark is capped by an additional 25% for each day late. 1 day late and your maximum mark cannot exceed 75% of the available marks. This is calculated automatically based on the clock on the hand-in system and as whole days.

    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.

    As above.

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

    All programming submissions will be made through the school's web submission gateway, available on the school web site (http://www.cs.adelaide.edu.au). 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 requestedby the lecturer.

    The School of Computer Science observes a strict lateness policy. Your mark is capped by an additional 25% for each day late. 1day late and your maximum mark cannot exceed 75% of the available marks. Thisis calculated automatically based on the clock on the hand-in system and aswhole days.

    Extensions may be requested in advance for medical or compassionate reasons but (1) all requests must be accompanied by documentation, (2) extensions awarded will be in proportion to the time lost that is supportedby documentation, (3) extensions are almost never granted on the final dayunless the issue is both severe and unforeseen, and (4) extensions are nevergranted because you have been busy, have managed your time poorly or areoverloaded in other courses.




  • 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 (http://www.adelaide.edu.au/policies/101/) 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.