{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

m1-soln-fall09

# m1-soln-fall09 - CMSC330 Fall 2009 Midterm#1 Solutions 1(9...

This preview shows pages 1–3. Sign up to view the full content.

CMSC330 Fall 2009 Midterm #1 Solutions 1. (9 pts) Programming languages a. (3 pts) Explain the difference between interpretation and compilation. Interpretation evaluates a program one line at a time. Compilation translates a program into a different form that can be executed. b. (6 pts) Explain the difference between static and dynamic types. Write a small piece of Ruby code that relies on dynamic types. With static types, variable types are checked at compile time and thus generally remain fixed . With dynamic types, variable types are checked at run time (right before they are used), and can thus change during program execution. Example: x = 1 ; x = “a” ; 2. (15 pts) Regular expressions and finite automata a. (5 pts) Give a regular expression for all binary numbers (strings of 0s and 1s) with an odd number of 0s. Many possible answers, some examples are: 1* 0 (1*01*0)*1* 1* 0 1*(01*01*)* Basically a single 0, combined w/ RE for even # of 0s, mixed with lots of 1* b. (4 pts) Give a NFA that accepts all binary numbers (strings of 0s and 1s) with an even number of 0s. Many possible answers, one example: 1 1 0 0

This preview has intentionally blurred sections. Sign up to view the full version.

View Full Document
c. (6 pts) Create a NFA for the regular expression ((ab|c)d)* using any method. Many possible answers, one example: b a d c ε ε 3. (18 pts) NFA to DFA Apply the subset construction algorithm to convert the following NFA to a DFA. Show the NFA states associated with each state in your DFA.
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}