Skip to Content

Courses

Print or email this page: Print this page Email a Friend

 

Languages in Software Development

Unit Code:HIT3315



Credit Points

Duration

Contact Hours

Campus

Prerequisite

Corequisite

12.5 Credit Points

1 Semester or equivalent

48 Hours

Hawthorn

 Nil

Related Course/s:

A unit of study in the Bachelor of Science (Information Technology), Bachelor of Science (Computer Science and Software Engineering)) and Bachelor of Science (Professional Software Development).

Aims & Objectives:

Upon completion of this units students will have knowledge of, and be able to apply, the following principles of modern programming language design, implementation, and application:

  • Solve problems using the imperative, functional, and object-oriented paradigms.
  • Interpret the tradeoffs and issues involved in the design of various language features.
  • Assess strengths and weaknesses of compiled and interpreter-based languages.
  • Describe the strengths and limitations of the imperative, functional, and object-oriented paradigms for solving different kinds of problems (or in different application domains), especially in relation to each other.
  • Explain and answer questions about specific languages that illustrate different paradigms, including questions about relevant concepts and major features.
  • Evaluate programming language features and designs based on their use in building domain-specific abstractions or in doing meta-programming.
  • Design, define, and evaluate parts of programming languages or similar systems and justify your design decisions. Justifications can be by: Referring to known programming language concepts; Referring to the semantics of the features; Making analogies to features in specific languages that illustrate the different paradigms and their success or limitations, or Making some more direct argument or proof.

Teaching Methods:

Lecture (24 hrs), Tutorial (labs) (24 hrs)

Assessment:

Assignments, Tests, Final exam

Content:

  • Introduction (Basic concepts, History of programming languages);
  • Inductive sets of data (Sets, set builders, BNF, EBNF,Classification of grammars,Induction,Recursive program specification);
  • Introduction to Lambda Calculus (What is computable?, Lambda calculus – syntax and semantics,Evaluation orders - the Church-Rosser Property);
  • Functional Language Concepts (Functions, Call-by-Value, Conditionals, Loops, Lazy evaluation);
  • Imperative Language Concepts (Assignment, Call-by-Reference, Sequencing);
  • Object-Oriented Language Concepts (Objects, Classes, Inheritance);
  • Hypertext Language Concepts (Links);
  • Typing (Manifested types,Type inference)

References:

Kenneth C. Louden, Programming Languages: Principles and Practice, 2nd Edition. Thomson Learning 2003.

Harold Abelson et al., Structure and Interpretation of Computer Programs, 2nd Edition, McGraw-Hill. 1996

John C. Mitchell, Concepts in Programming Languages. Cambridge University Press, 2003