Units / FIT2102

FIT2102 · Programming paradigms

Official Handbook

2026 Handbook6 credit pointsLevel 2Faculty of Information Technology

Last checked: 22 Aug 2026 UTC

Overview

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 you 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. Strong, expressive type systems are increasingly important in the age of artificial intelligence and "vibe coding", where type checking provides an essential verification of code correctness to support safe integration of AI-generated code. 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.

Areas of study: Advanced computer science Computational science

Offerings

CampusTeaching periodMode
MalaysiaSecond semesterTeaching activities are on-campus (ON-CAMPUS)
ClaytonSecond semesterTeaching activities are on-campus (ON-CAMPUS)

Assessment

The Handbook does not list a final examination among the assessment items. That is not a guarantee there is none.

#AssessmentTypeWeightHurdle
1Assignment 1 Functional Reactive Programming Project30%Threshold
2Assignment 2 Haskell ProgrammingProject30%Threshold
3Applied quizzesQuiz / Test20%Threshold
4Applied classworkExercise20%Threshold

This unit has threshold mark hurdles. You must achieve at least 45% of the available marks for the in-semester assessment and at least 45% of available marks for the applied classwork and quiz, and an overall unit mark of 50% or more to be able to pass the unit. If you do not achieve the threshold mark, you will receive a fail grade (NH) and a maximum mark of 45 for the unit. Note: 45% hurdle for the total of Assignment 1 and Assignment 2 45% hurdle for the total of class worksheet and quiz

Assessment details may change. Please refer to the assessment information in Moodle closer to the start of the teaching period.

Requisites

prerequisite

  • FIT1008 — Introduction to computer science
  • FIT1054 — Computer science (advanced)
  • FIT2085 — Fundamentals of algorithms for engineers

Joined by OR.

Learning outcomes

  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.

Workload

Minimum total expected workload to achieve the learning outcomes for this unit is 144 hours per semester typically comprising a mixture of scheduled online and face to face learning activities and independent study. Independent study may include associated reading and preparation for scheduled teaching activities.

ActivityDuration
Applied sessions24 hours
Workshops24 hours

Ask about FIT2102

Answered from the Handbook fields above - no AI, no guessing. Every answer links back to the source.

Community discussions about FIT2102

Community

Student experience, not official rules. Nothing here changes what the Handbook says.

No discussions yet

Be the first to share what this unit was actually like.

Monash Hub is an independent student information platform and is not affiliated with or endorsed by Monash University. Always confirm enrolment, graduation, visa and academic policy decisions through the Monash website, Handbook, Moodle or WES.

Monash Hub 为独立学生信息平台,与 Monash University 无官方隶属或背书关系。重要决定请以官方最新信息为准。