# Online Assignment Help – Principles of Programming Language

- Choose a computer programming language you are completely familiar with.
- Devote a 2 week to 3 week effort to learning how to programing the language of your choice, to the level of being able to program simple applications in the language.
- Demonstrate your learning and expertise by providing demo application in the language. (For suggestions about some plausible apps, see the Appendix.) Submit a 1-2 page project proposal: language and app to the instructor, before commencing the work.)
- Present your final results in the form of a Report that summarizes your work:

- Title
- Author
- Revision
- Introduction: Problem Statement
- Method: Design, Pseudo-code(s); place actual pseudo-codes in an Appendix
- Solution: Programming Language Implementations; place actual app source code in the Appendix
- Results and Discussion: Test Plan(s),
- Snapshots (screen shots) of Running of Test Cases; place Test Plans in the Appendix
- Summary and Conclusions
- Acknowledgements
- References
- Appendix:
- Pseudo-codes
- App source codes
- Test plans. Test Case runs, screen shots

## Project Plan Appendix: Application Topics

a. App of your own choice, creativity, innovation, invention

b. Tax calculator

c. Measures Calculation Companion: lengths, areas, volumes for 2D and 3D geometric shapes and objects.

d. Conversion Tables Companion: for Weights, distances, lengths, capacities

e. Currency converter

f. Student Chemistry Companion

g. Student Physics Companion

h. Student Biology (Anatomy and Physiology) Companion

i. Student Biology (Neuroscience) Companion

j. Student Statistics Calculator Companion

k. Student Discrete Math Companion

l. Sports Fan Companion (Baseball, Football, Basketball, Tennis, Soccer)

m. Lifestyle Tracking Companion

n. Personal DNA Companion

o. Online Holiday Shopping Companion

p. Black Friday Shopping Companion

q. Coupons and Shopping Companion

r. Address Book (directory, contact database, yellow pages, white pages)

s. Grade Calculator for a Professor teaching multiple courses

t. Micro Electronic Health Record (EHR) Management system

u. Emulator for a modern micro-processor.

v. System-on-a-chip (SOC) Emulator: (Arduino, Raspberry Pi, etc.)

w. Emulator for a virtual machine (VM)

x. Interpreter or translator for a domain specific language (DSL)

y. Simulator of IFTTT.com recipes

z. Micro Game Engine

aa. Little Bits ™ simulator

bb. Sifteo ™ Cubes simulator

cc. Application of Deep Learning algorithms to a pattern recognition problem

dd. A simulator for MapReduce or Hadoop.

ee. A small scale Social Media Platform (micro-Facebook, micro-LinkedIn, micro-Twitter, micro-YouTube, etc.)

ff. A small scale Recommendation System.

gg. A small-scale Multi-sided Platform (micro-Uber platform for specific service area)

hh. A small scale Pokemon Go simulator

ii. Personal Robot or Social Robot simulator

jj. Collective Intelligence simulator

kk. Home or Domestic IOT simulator

## Final Exams – Online Exam Help

Notes:

1. The exam is open book and open notes.

2. Do the problems in any order, as long as they are properly labeled.

3. Do the easiest problems first.

4. If you attempt a problem and cannot solve it, move on and try to come back to it later.

5. Do not get stuck on any one problem.

6. Check your answers for mistakes in solution steps.

7. Content:

- Programming Languages
- Programming for Computing
- Models of Computation
- Semiotics and Linguistics (Syntax, Semantics, Pragmatics)
- Syntax, Grammars, Context Free Grammars (CFG)
- BNF (Backus-Naur Form)
- Parse tree, Abstract Syntax Tree
- Formal Semantics
- Translators, Compilers, Compiler-Compilers

Q1. Consider the following program fragment:

A := 2; B:= A + 1; A := B * B;

- Create an abstract syntax tree (AST) or construct for it.
- Write in plain English, and informal description of the “meaning” of the computation represented by the fragment. For example, elucidate the meaning as:

(Program x Environment) Environment - Use Operational semantics to indicate the reduction of the program to its environment.
- Use Denotational semantics to compute Env(A) and Env(B).
- Give an Axiomatic semantics description of the program fragment. (Be sure to identify Invariants and Weakest Preconditions).
- Show how an Attribute Grammar can be used to evaluate and reduce the program to its environment.

Q2. Given a list L, we will like to find the last item on L. Write a program in each of the following to perform this task.

- Pseudo-code
- HLL you are using for your “Capstone” Project
- Prolog
- C or C++
- Haskell
- Scheme
- (Extra Credit): In Lambda calculus. The following can be used to define list manipulators:

cons: (λx. λy. λf. f x y)

car: (λz. z (λx. λy x))

cdr: (λz. z (λx. λy y))

f-recursion (* see note below):

f = (λF. λx (F x)) f = H f

Y = (λh. (λx. h (x x)) (λx. h ( x x)))

Y H = H (Y H).

So, can use Y f = f (Y f) to call any recursive function

## Computer Science Assignment Help – Recursion

Recursive functions can be defined in the λ-calculus using a function which calls a function y and then regenerates itself. This can be better understood by considering the following function Y:

Y ≡ (λy.(λx.y(xx))(λx.y(xx)))

This function applied to a function R yields:

YR ≡ (λx.R(xx))(λx.R(xx))

which further reduced yields

R((λx.R(xx))(λx.R(xx))

but this means that YR → R(YR), that is, the function R is evaluated using the recursive call YR as the first argument.

An infinite loop, for example, can be programmed as YI, since this reduces to I(YI), then to YI and so ad infinitum.

A more useful function is one which adds the first n natural numbers. We can use a recursive definition, since Pn

i=0 i = n +

Pn−1

i=0 i. Let us use the

following definition for R:

R ≡ (λrn.Zn0(nS(r(Pn))))

16

This definition tells us that the number n is tested: if it is zero the result of the sum is zero. In n is not zero, then the successor function is applied n times to the recursive call (the argument r) of the function applied to the

predecessor of n.

How do we know that r in the expression above is the recursive call to R, since functions in λ-calculus do not have names? We do not know and that is precisely why we have to use the recursion operator Y. Assume for example

that we want to add the numbers from 0 to 3. The necessary operations are performed by the call:

YR3 → R(YR)3 → Z30(3S(YR(P3)))

Since 3 is not equal to zero, the evaluation is equivalent to 3S(YR(P3)) that is, the sum of the numbers from 0 to 3 is equal to 3 plus the sum of the numbers from 0 to the predecessor of 3 (that is, two). Successive recursive

evaluations of YR will lead to the correct final result.

Notice that in the function defined above the recursion will be stopped when the argument becomes 0. The final result will be 3S(2S(1S0)) that is, the number 6.