Page 1 of 1

Module Code - Title:

CS4221 - FOUNDATIONS OF COMPUTER SCIENCE 1

Year Last Offered:

2025/6

Hours Per Week:

Lecture

2

Lab

1

Tutorial

1

Other

0

Private

6

Credits

6

Grading Type:

N

Prerequisite Modules:

Rationale and Purpose of the Module:

To understand the mathematical basis of many complex computations, to lay a basis for derivation of simple programs from formal specifications, and to understand the dependence of program on underlying evaluation mechanisms.

Syllabus:

Relation between computer science, computation, and computers, illustrating logical dependence of computations from electronic computers. Programming as a specification of a computation, and its dependence on evaluation mechanisms; - Arithmetic operators and syntax using infix, outfix, prefix, superfix, subfix and so forth. Evaluation of complex arithmetic expressions. - Scope of operations and requirement to grouping operands. Linear notation restricted to infix, prefix, postfix forms, and conventions to specify relative priority/precedence of operators. Syntax trees and their use in the determination of ordering of computations. Use of lambda notation, and representation in syntax trees. - Conditional expressions. Function definitions, and simple recursive definition. Common features of programming languages (notations) and their relationship to mathematics including notion of types as sets of values, instances of a type as values. - Packaging code fragments into functions to simply handling nested inductive definitions and unpackaging inner functions into code fragments to yield conventional implementations of nested loops

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students should be able to: 1. Understand the difference between syntax and semantics. 2. Convert between syntax such as prefix, infix and postfix. 3. Construct Abstract Syntax trees for arbitrarily complex expressions. 4. Construct Lambda Calculus expressions for simple functions. 5. Use recursion for simple calculations. 6. Understand the equivalence of Abstract Syntax Trees, Lambda Calculus

Affective (Attitudes and Values)

N/A

Psychomotor (Physical Skills)

N/A

How the Module will be Taught and what will be the Learning Experiences of the Students:

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

D. Watt (1989) Comparative Programming Languages and Paradigms , Prentice Hall

Other Relevant Texts:

G. Dromey (1989) Derivation of Computer Programs , Addison Wesley
B. Eiffel () Theory of Programming Languages , Prentice Hall

Programme(s) in which this Module is Offered:

Semester(s) Module is Offered:

Autumn

Module Leader:

sarmad.ali@ul.ie