| Module Title |
Comparative Programming Languages |
| Module Code |
CSC1055 (ITS: CA341) |
|
Faculty |
Computing |
School |
Engineering & Computing |
|
NFQ level |
8 |
Credit Rating |
5 |
|
|
Description
This module will introduce the student to essential programming concepts on which modern programming languages are designed. This module will allow students to understand design choices in current programming languages, and to readily understand the features that may introduced into future programming languages.
|
Learning Outcomes
1. Explain the essential concepts underpinning modern programming languages. 2. Evaluate a programming language with respect to its design choices and appropriateness for a given programming task 3. Implement a fundamental programming task and data structure in an imperative and declarative fashion 4. Compare a procedural programming language with an object oriented programming language within the context of programming language design concepts 5. Compare a functional programming language with a logic programming language within the context of programming language design concepts
|
| Workload | Full time hours per semester | | Type | Hours | Description |
|---|
| Lecture | 24 | Formal lectures | | Assignment Completion | 50 | No Description | | Independent Study | 51 | No Description |
| Total Workload: 125 |
|
|
| Section Breakdown | | CRN | 10238 | Part of Term | Semester 1 | | Coursework | 0% | Examination Weight | 0% | | Grade Scale | 40PASS | Pass Both Elements | Y | | Resit Category | RC1 | Best Mark | N | | Module Co-ordinator | Geoffrey Hamilton | Module Teacher | Brian Davis |
|
| Assessment Breakdown |
| Type | Description | % of total | Assessment Date |
| Group assignment | Imperative Programming Assignment. Students will implement a fundamental programming task in a procedural and object-oriented programming language. Students must describe and document their solution in detail and compare and contrast both programming paradigms in a critical report. | 20% | Week 6 | | Group assignment | Declarative Programming Assignment. Students will implement a fundamental programming task in a functional and logic based language of their choice. Students must describe and document their solution in detail and compare and contrast both programming paradigms in a critical report | 20% | Week 9 | | Loop Quiz | Students will complete weekly quizzes which will test the knowledge and comprehension of each unit of teaching. | 10% | Every Week | | Formal Examination | n/a | 50% | End-of-Semester |
| Reassessment Requirement Type |
Resit arrangements are explained by the following categories;
RC1: A resit is available for both* components of the module.
RC2: No resit is available for a 100% coursework module.
RC3: No resit is available for the coursework component where there is a coursework and summative examination element.
* ‘Both’ is used in the context of the module having a coursework/summative examination split; where the module is 100% coursework, there will also be a resit of the assessment
|
|
Pre-requisite |
None
|
|
Co-requisite |
None |
| Compatibles |
None |
| Incompatibles |
None |
|
|
All module information is indicative and subject to change. For further information,students are advised to refer to the University's Marks and Standards and Programme Specific Regulations at: http://www.dcu.ie/registry/examinations/index.shtml
|
Indicative Content and Learning Activities
Execution Environments Complied vs Interpreted Programs, Bindings.
Typing and Scope Primitive types, Constructed Types, Static vs Dynamic Types Languages, Type Inference,
Algebraic Data Types, Dependent Types,
Scope in Blocks, Scope in Namespaces, Static vs. Dynamic Types.
Pointers and Memory Management Explicit and Implicit pointers, Memory Management, Garbage Collection.
Abstraction Control, Procedural and Data Abstractions, Functions.
Parameter Passing Parameter Matching and Parameter Passing Mechanisms.
Assertions and Exceptions Pre- and Postconditions, Loop Invariants, Program Correctness.
Concurrency Semaphores, Monitors, Message Passing, Threads, Coroutines.
Object-Oriented Programming Paradigm Classes, Sub-classes, Inheritance, Multiple Inheritance, Interfaces, Polymorphism (incl. Parametric Polymorphism).
Logic Programming Paradigm Search vs. Computation, Unification, The Prolog Database.
Functional Programming Paradigm Functions as First-Class values, Closures, Partial Application, Lambda Functions.
|
Indicative Reading List
Books:
- M. Ben-Ari: 1996, Understanding Programming Languages, John Wiley & Sons, 978-047195846
- John C. Mitchell: 2003, Concepts in programming language, Cambridge University Press, New York, 540, 978-052178098
- David A. Watt: 2004, Programming Language Design Concepts, John Wiley & Sons, 978-047085320
- 0: Programming Language Pragmatics, 4, San Diego; Morgan Kaufmann, 9780124104099, 315995
- 2015: Concepts of Programming Languages, 11, Pearson, 9780133943023,
Articles:
- Barbara G. Ryder, Mary Lou Soffa and Margaret Burnett: 2005, The impact of software engineering research on modern progamming languages, ACM Transactions on Software Engineering and Methodology (TOSEM), Volume 14 Issue 4, 1049-331X,
|
Other Resources
None |
|
|
|
|