Skip to content | Change text size

M O N A T A R

InfoTech Unit Avatar

FIT2102 Programming paradigms

Chief Examiner

This field records the Chief Examiner for unit approval purposes. It does not publish, and can only be edited by Faculty Office staff

To update the published Chief Examiner, you will need to update the Faculty Information/Contact Person field below.

Tim Dwyer

NB: This view restricted to entries modified on or after 19990401000000

Unit Code, Name, Abbreviation

FIT2102 Programming paradigms (10 Sep 2015, 4:52pm) [PROG PARA (03 Sep 2015, 12:19pm)]

Reasons for Introduction

Reasons for Introduction (03 Sep 2015, 12:19pm)

With the introduction of a specialised Computer Science Bachelors degree under the new Course Architecture redevelopment comes an opportunity to re-introduce fundamental core computer science material such as programming paradigms study. This essential material had been dropped from the BCS degree previously due to the need to cater for a wider variety of students in what had become a more general degree.

Reasons for Change (13 Jul 2021, 4:26pm)

29/08/2017 - Admin: update prerequisites to include a new unit being introduced as part of the redevelopment of the Bachelor of Computer Science Advanced (Honours) for 2018.

12/06/2017: Admin - updating location of offering to reflect actual campus offerings at the ADE's request.

27/09/2016: Revised learning outcomes.

9/9/2016: Updated synopsis and learning outcomes - primarily to give a little more consideration of theory. Changes were reviewed and edited by BCS course director Arun Konagurthu.

Introduced for course architecture programs. Effective semester 1, 2016

22/8/2016: Changed the assessment to 40% Exam, 60% in-semester. This is in-line with a more "flipped-classroom" model with greater emphasis on continuous assessment. In-semester assessment will be a combination of project-work, quizzes, assessed classroom-activities and so on. Adjustment approved by the BCS course director Arun Konagurthu.

20/9/2019: Admin - updating exam duration to include additional 10 minutes as per University requirement.

11/6/2020: Changed assessment to 100% in semester as part of exam removal to support online hybrid delivery of unit (further details available here: https://docs.google.com/document/d/1D5yfAOgd54VDPinwG1caQTXSWcU60Gtj4zyqR5nVsrE/edit?usp=sharing)

12/06/2020: Minor updates to reflect the evolved content of the unit. (submitted on behalf of Tim Dwyer)

18/6/20: Updating workload from laboratory to tutorial (as advised by Tim Dwyer)

30/6/20: updating assessment section to include academic integrity and authentication method 1/7/20: added reference to similarity matching (MOSS use is intended)

01/10/2020 Admin: Update to include new assessment and teaching approach fields as per Handbook requirements.

13/07/2021: Admin - Adding 'Reasons for Change'. Currently, FIT2102 has 100% in-semester assessment, and there is technically no hurdle in this case.

Request for Additional Hurdle

  1. 45% hurdle for the total of Assignment 1 and Assignment 2
  2. 45% hurdle for the total of Tutorial Homework

Currently, FIT2102 has a 100% in-semester assessment, and there is technically no hurdle in this case. There are two components for in-semester assessment:

The challenges is that students could technically pass the unit without doing much work for the tutorial component if they do well in assignments.

Role, Relationship and Relevance of Unit (03 Sep 2015, 12:20pm)

The unit is core in the BCS degree and introduces students to a variety of programming paradigms apart from the conventional imperative / procedural and object-oriented approaches they will be familiar with from the majority of programming-related units in the degree.

Objectives

Objectives (12 Jun 2020, 10:20am)

At the completion of this unit, students should be able to:

  1. describe the major attributes that differentiate programming paradigms considered;
  2. describe the major features, strengths and weaknesses of important programming languages in the context of their historical development;
  3. analyse and critique past, present and future programming languages;
  4. evaluate the suitability of different paradigms for different problem types;
  5. design and implement programs in several programming languages of different paradigms and demonstrate an ability to solve more complex problems in at least one non-procedural paradigm.
  6. describe the theoretical aspects of modern programming paradigms and apply this theory to analysis and design of programs.

Unit Content

ASCED Discipline Group Classification (03 Sep 2015, 12:24pm)

020103

Synopsis (12 Jun 2020, 10:19am)

Ability to code in differently constructed programming languages is analogous to speaking in different natural languages with varying grammars. Similar to natural languages, programming languages from different paradigms (styles) vary in their expressiveness and efficiency. One programming language may require many screens-full of complex code to accomplish a task for which another requires but a few expressive lines of code. Therefore, understanding the design principles of programming languages enables computational problems to be implemented in dramatically different and powerful ways; leading, in some cases, to solutions that are more elegant, correct, maintainable, efficient and/or extensible.

This unit examines a selection of programming languages and paradigms and explores the evolution of language design from low-level paradigms that are closer to the execution model of the machine, to more high-level declarative paradigms that allow programmers to model a problem precisely rather than specify its solution. The unit covers paradigms such as functional and declarative programming styles, comparing and contrasting them to programming styles that students are already familiar with, including object-oriented, imperative and procedural programming paradigms. We compare type systems supported by various languages, from scripting languages like JavaScript with weak type systems, to gradual typing as in TypeScript, to advanced compiled languages with strong type correctness, such as Haskell. We see these applied to data-modeling techniques (covering polymorphism, mutability-versus-purity, state management, and side-effects) and different models of execution such as strict-versus-lazy evaluation.

The unit provides practical experience with using modern functional programming techniques, non-procedural, non-object-oriented programming languages and discusses the influence of programming language theory on the design of current main-stream computer languages, and how the theory translates to practice. A focus of the unit is that these techniques are applicable and ubiquitous in a variety of modern languages, for example, we will see how functional programming techniques are used in relatively conventional imperative languages like JavaScript, and compare and contrast this with pure functional languages, such as Haskell.

Teaching Methods

Mode (03 Sep 2015, 12:25pm)

On-campus

Special teaching arrangements (01 Oct 2020, 4:47pm)

Active learning

All lectures and classes will be interactive and require active participation by students in problem solving and programming exercises.

Lectures, tutorials and lab classes

Lectures will be interactive and involve group problem solving activities - students should bring a laptop to the lectures. Participation in lecture activities will be assessed through rolls and on-line forums and quizzes.

Lab classes will involve individual work and homework problems and exercises. Acceptable completion of these will be assessed through one-on-one interviews at each lab with the tutors. Problem-based learning There will be take-home programming and problem-solving challenges given in each lecture and students will continue to work on these in the labs. They will be structured to provide a working understanding of the theory and topics covered.

Assessment

Assessment Summary (14 Jul 2021, 12:36pm)

In-semester assessment: 100%

Assignment 1: 30% Assignment 2: 30% Tutorial Tasks: 40%

Students are interviewed on their efforts in assignments and tutorial tasks. Students maintain a diary of efforts to clarify individual contributions to team tasks.

Similarity matching is performed on student assignment submissions.

  1. Assignment 1: Functional Reactive Programming 30% - ULO 4-5
  2. Assignment 2: Haskell Programming: 30% - ULO 2-6
  3. Tutorial Homework: 40% - ULO 1-6

Additional Hurdle

  1. 45% hurdle for the total of Assignment 1 and Assignment 2
  2. 45% hurdle for the total of Tutorial Homework

Workloads

Workload Requirements (18 Jun 2020, 3:27pm)

Minimum total expected workload equals 12 hours per week comprising:

(a.) Contact hours for on-campus students:

  • Two hours lectures
  • Two hours tutorials
  • (b.) Additional requirements (all students):

  • A minimum of 2-3 hours of personal study per one hour of lecture time in order to satisfy the reading, tute and assignment expectations.
  • Resource Requirements

    Prerequisites

    Prerequisite Units (29 Aug 2017, 12:16pm)

    FIT1008 or FIT1054

    Proposed year of Introduction (for new units) (03 Sep 2015, 12:29pm)

    Semester 2, 2017

    Location of Offering (12 Jun 2017, 11:38am)

    Clayton, Malaysia

    Faculty Information

    Proposer

    Ange Delbianco

    Approvals

    School: 14 Jul 2021 (Monica Fairley)
    Faculty Education Committee: 14 Jul 2021 (Monica Fairley)
    Faculty Board: 14 Jul 2021 (Monica Fairley)
    ADT:
    Faculty Manager:
    Dean's Advisory Council:
    Other:

    Version History

    03 Sep 2015 Ange Delbianco Introduced for course architecture programs. Effective semester 1, 2016
    10 Sep 2015 Caitlin Slattery Minor edits
    22 Sep 2015 Jeanette Niehus FIT2102 Chief Examiner Approval, ( proxy school approval )
    22 Sep 2015 Jeanette Niehus FEC Approval
    22 Sep 2015 Jeanette Niehus FacultyBoard Approval - UGPC approved 18/06/2015.
    22 Aug 2016 Tim Dwyer modified Assessment/Summary
    22 Aug 2016 Tim Dwyer
    23 Aug 2016 Tim Dwyer modified Assessment/Summary; modified ReasonsForIntroduction/RChange
    02 Sep 2016 Jeanette Niehus FIT2102 Chief Examiner Approval, ( proxy school approval )
    02 Sep 2016 Jeanette Niehus FEC Approval
    02 Sep 2016 Jeanette Niehus FacultyBoard Approval - UGPC executive approval given 01/09/2016
    09 Sep 2016 Tim Dwyer modified UnitContent/Synopsis: Word-smithing of synopsis and adding a reference to theory; modified UnitObjectives/Objectives: Adding a learning outcome about theory and changing "identify" to "understand" in several places - targeting a slightly higher Bloom scale objective. Modifications approved by Course Coordinator (Arun Konagurthu)
    09 Sep 2016 Tim Dwyer modified UnitObjectives/Objectives; modified UnitContent/Synopsis
    27 Sep 2016 Tim Dwyer modified UnitObjectives/Objectives
    27 Sep 2016 Jeanette Niehus Admin: modified ReasonsForIntroduction/RChange; modified UnitObjectives/Objectives
    05 Oct 2016 Jeanette Niehus FIT2102 Chief Examiner Approval, ( proxy school approval )
    05 Oct 2016 Jeanette Niehus FEC Approval
    05 Oct 2016 Jeanette Niehus FacultyBoard Approval - UGPC executive approval given 05/10/2016
    19 Jan 2017 Jeanette Niehus Admin: modified Chief Examiner
    12 Jun 2017 Jeanette Niehus Admin: modified ReasonsForIntroduction/RChange; modified LocationOfOffering
    29 Aug 2017 Jeanette Niehus modified ReasonsForIntroduction/RChange; modified Prerequisites/PreReqUnits
    29 Aug 2017 Jeanette Niehus FIT2102 Chief Examiner Approval, ( proxy school approval )
    29 Aug 2017 Jeanette Niehus FEC Approval
    29 Aug 2017 Jeanette Niehus FacultyBoard Approval - Executively approved by DD(E) 22/08/2017.
    20 Sep 2019 Emma Nash modified ReasonsForIntroduction/RChange; modified Assessment/Summary
    11 Jun 2020 Phillip Abramson modified Assessment/Summary; modified ReasonsForIntroduction/RChange
    12 Jun 2020 Phillip Abramson modified ReasonsForIntroduction/RChange; modified UnitContent/Synopsis; modified UnitObjectives/Objectives
    12 Jun 2020 Phillip Abramson
    18 Jun 2020 Phillip Abramson modified Workload/ContactHours to remove references to pracs/labs
    18 Jun 2020 Margot Schuhmacher modified ReasonsForIntroduction/RChange; modified ReasonsForIntroduction/RChange
    30 Jun 2020 Phillip Abramson modified Assessment/Summary; modified ReasonsForIntroduction/RChange
    01 Jul 2020 Phillip Abramson modified Assessment/Summary; modified ReasonsForIntroduction/RChange
    03 Jul 2020 Emma Nash FIT2102 Chief Examiner Approval, ( proxy school approval )
    03 Jul 2020 Emma Nash FEC Approval
    03 Jul 2020 Emma Nash FacultyBoard Approval - Approved at FEC 3/20
    01 Oct 2020 Miriam Little modified Teaching/SpecialArrangements; modified ReasonsForIntroduction/RChange; modified Assessment/Summary
    12 Jul 2021 Matt Chen modified Assessment/Summary; modified Assessment/Summary
    13 Jul 2021 Jeanette Niehus Admin: modified ReasonsForIntroduction/RChange
    14 Jul 2021 Matt Chen modified Assessment/Summary; modified Assessment/Summary
    14 Jul 2021 Monica Fairley FIT2102 Chief Examiner Approval, ( proxy school approval )
    14 Jul 2021 Monica Fairley FEC Approval
    14 Jul 2021 Monica Fairley FacultyBoard Approval - executively approved DDE 14/7/21

    This version: