Thursday, July 03, 2008


Calculator Project
In VBA, make a form, and make a calculator, with a testbox and a series of buttons for addition, subtraction, multiplication, division, and equal.
>> View/Complete Assignment: Calculator Project

Item Prolog Homework 3
Trace through the conc procedure, appending a list of four elements to another list of four elements.

Write the following prolog procedures, on lists.

1. subst(A,B,C,D) where list D is list C with element A substituted for all occurrences of element B.
2. equal(X,Y) if X and Y are the same set.

Also, read thru the following:
http://www.ling.helsinki.fi/kit/2004k/ctl272/Bangor/clbook_30.html

and do copy and try out the examples.
>> View/Complete Assignment: Prolog Homework 3

Item Prolog Homework 2
  1. Try to write Prolog rules corresponding to each of the following.
    1. Every farmer owns a donkey.
    2. Every farmer who owns a donkey beats it.
    3. If Pedro owns a donkey, he beats it.
    4. If Pedro is a farmer, he owns a donkey.
    5. If Pedro is a donkey-owning farmer then he beats his donkey.
    6. If Pedro is a donkey-owning farmer then he probably beats his donkey.
    7. Donkeys have a hard time.
  2. The infix predicate =/2 takes two arguments and tries to unify them. We can use this to experiment with Prolog's pattern matching; for example:
    | ?- X = [a,b].
    X = [a,b] ?
    yes

    | ?- [X] = [a, b].
    no

    | ?- X = a, X = Y.
    X = a,
    Y = a ?
    yes
    So, Prolog will tell us whether the terms on either side of the = unify, and if they do, it will provide us with the bindings for any variables that appear.

    For each of the following:

    • specify whether the query submitted to Prolog succeeds or fails; and
    • if it succeeds, specify what is assigned to the variables by the unification;
    • if it fails, explain why.
      1. | ?- X = fred.
      2. | ?- jane = fred.
      3. | ?- X = fred, X = Y.
      4. | ?- X = happy(jim).
      5. | ?- X = Y.
      6. | ?- 2 + 1 = 3.
      7. | ?- f(X,a) = f(a,X).
      8. | ?- fred = fred.
      9. | ?- likes(jane, X) = likes(X, jim).
      10. | ?- f(X,Y)=f(P,P).
      1. | ?- A = b(c).
      2. | ?- a = b(c).
      3. | ?- a(b,C) = a(C,b).
      4. | ?- a(b,C) = a(C,d).
      5. | ?- A = B.
      6. | ?- A = b(C).
      7. | ?- 3 = 6/2.
      8. | ?- a(b,c) = a(b,c).
      9. | ?- a(B,C) = a(D,D).
      10. | ?- member(a,L) = member(E,[b,c,d]).
      11. | ?- A = b(A).
  3. Write the ancestor/2 predicate to a file, and add about ten facts along the lines of parent(anna,belinda), parent(belinda,celia) etc. Then call ancestor(anna,X). Use ; to see all solutions, viewing the execution of the goal with trace.
  4. We can use the successor notation for addition to show an example of the interaction between unification and recursion. This example may appear a bit complex first, if you are not used to mathematical theory, but in fact it just shows how simple the ideas really are.

    The numbers 0, 1, 2, 3, 4...are defined by a set of axioms called the Peano axioms. The definition of the numbers themselves are based on two concepts:

    • a STARTING POINT, which we call zero and write as 0; and
    • the concept of BEING THE NEXT NUMBER, which we will represent as s(K).
    In this notation, 0 is 0, 1 is s(0), 2 is s(s(0)), 3 is s(s(s(0))), and so on. Note that although s is a function, there is no notion of it being evaluated.

    Using this representation, we can write a procedure which formalises the definition of addition:

    % succ_plus/3
    % the definition of addition according to the Peano axioms
    % succ_plus(X,Y,Z) corresponds to X + Y = Z
    % X,Y,Z are all given in successor notation

    succ_plus(0,X,X).
    succ_plus(s(X),Y,s(Z)) :-
    succ_plus(X,Y,Z).

    Let's say that we want to add 3 and 2. 3 is the successor of the successor of the successor of 0 (s(s(s(0)))) and 2 is the successor of the successor of 0 (s(s(0))). To follow the execution of the goal, we use trace as usual:
    | ?- trace,succ_plus(s(s(s(0))),s(s(0)),X).
    {The debugger will first creep -- showing everything (trace)}
    1 1 Call: succ_plus(s(s(s(0))),s(s(0)),_128) ?
    2 2 Call: succ_plus(s(s(0)),s(s(0)),_325) ?
    3 3 Call: succ_plus(s(0),s(s(0)),_445) ?
    4 4 Call: succ_plus(0,s(s(0)),_561) ?
    4 4 Exit: succ_plus(0,s(s(0)),s(s(0))) ?
    3 3 Exit: succ_plus(s(0),s(s(0)),s(s(s(0)))) ?
    2 2 Exit: succ_plus(s(s(0)),s(s(0)),s(s(s(s(0))))) ?
    1 1 Exit: succ_plus(s(s(s(0))),s(s(0)),s(s(s(s(s(0)))))) ?

    X = s(s(s(s(s(0))))) ?

    yes
    ?-
    Whenever the second clause of addition/3 is used (i.e. every time the first term is not equal to 0) X matches the interior of a structure. For instance, in the first call, s(X) and s(s(s(0))) are unified, giving the substitution X = s(s(0)). The recursive clause is used until X is matched to 0--then we use the base case, and the third term is unified with the second term. As we step back through the recursive clause, s(...) is added on to the third term once for every s(...) we had to strip off to reach the base case.
    1. Try the program out with a few different numbers, until you understand how it works.
    2. Write a procedure for subtraction. This will only work when the first number is equal or greater to the second--why?
      >> View/Complete Assignment: Prolog Homework 2

Item Prolog Homework 1
Download and install SW-I Prolog.

Trace through the sam likes example.

Then:

  1. Create files with the facts and rules discussed in this chapter. Try out various queries.
  2. Represent the following sentences as Prolog facts.
    1. Bill is tall.
    2. Bill is a teacher.
    3. Bill sings.
    4. Bill likes ice-cream.
    5. Mary hates ice-cream.
    6. Today is Friday.
    7. Jane hit Bill.
    8. Jane hit Bill with a cricket bat.
    9. Belinda bought a sweater.
    10. Belinda bought Jim a sweater.
    11. Belinda bought Jim a sweater at Jenner's.
    12. Belinda bought Jim a sweater for fifty pounds at Jenner's.
    13. Belinda is married to John.
    14. John is Belinda's husband.
    15. John and Belinda are married.
  3. Construct a file called family.pl containing the following Prolog clauses.
    % parent(Parent,Offspring)
    parent(mary,thomas).
    parent(mary,jane).
    parent(william,thomas).
    parent(william,jane).
    parent(thomas,lee).
    parent(thomas,sandy).

    % female(Female).
    female(mary).
    female(jane).
    female(sandy).

    % male(Male).
    male(thomas).
    male(william).
    male(lee).
    Load the contents of the family file into the Prolog interpreter.
    • Display the contents of the database by using listing/0. Don't forget the full stop.
    • Display parts of the contents by using the predicate listing/1 whose argument should be the name of a predicate. For instance typing listing(male) will display all facts whose predicate is male regardless of arity.
    • Look at the following queries. Try to work out what the interpreter will reply first, then try them out. Check if there is more than one solution using ; if applicable.
      | ?- parent(mary,thomas).
      | ?- parent(thomas,lee).
      | ?- parent(thomas,mary).
      | ?- male(william).
      | ?- parent(thomas,Who).
      | ?- parent(Parent,sandy).
      | ?- parent(X,Y).
    • What queries would you use to find out the following?
      • Is Mary the parent of Thomas and Jane?
      • Do Jane and Thomas have the same parent?
      • Does Sandy have a sister?
      • Who is Thomas's mother?
  4. Establish a database with parent and gender facts for your own family. Write rules for commonly used family terms, such as sister, brother, mother, father, grandparent, grandfather, cousin, aunt, half-brother, etc. Try out the program, making sure that it gives the correct answers. Use trace to make sure you understand the different answers.
    >> View/Complete Assignment: Prolog Homework 1

Item Homework #11: Dynamic Variables
Read this article at Microsoft Research about "Dynamic Variables." Do not read the Appendix to the article just yet, only the main body of the article.

Answer the following questions:
1) List two purposes for which they envision using these dynamically scoped variables?
2) Choose one of those two, and motivate it. That is, show what the code would look like when not using dynamic variables, and then what it would look like with dynamic variables.
3) Briefly describe the "simple" and the "novel" implementations.
>> View/Complete Assignment: Homework #11: Dynamic Variables

Item Static Scoping
Read this article. Give four reasons why nesting in Ada programs is for the birds. What is the authors' suggestion? Also, read this article about regular expressions in Word, and try the find and replace example in the article. http://office.microsoft.com/en-us/help/HA010873051033.aspx
>> View/Complete Assignment: Static Scoping

Item HW #8
Using VBA for Excel, implement the first FSA from assignment #5. On the spreadsheet, include a formal description of the FSA. This includes the transition function delta. Rather than using Gotos, keep a variable which maintains the present state, and look up the appropriate transition to the next state, based on the present state and the input, from that lookup table on the Excel worksheet.


Item HW #7
Using VBA for Excel, implement the first FSA from assignment #5. Read the input string from cell B1. Print "accept" or "reject" in C1. Print the sequence of states in cell A4 and down (A5, A6, etc). Use gotos and goto labels to represent the states. Use the MID function to extract letters sequentially from the input string.


Item Assignment 6: FSAs
FSA.doc (38 Kb)
Answer the questions in the attached Microsoft Word document about two FSMs.

Due Feb 11, 2008

Item Assignment 5
Download G95 (sidebar) and install it on your computer. Name the files *.f90 to be able to use FORTRAN 90 syntax. If you name it *.f, you will have annoying restrictions, such as the first 6 characters on a line being reserved. Read through the beginning of the tutorial, here:

http://www.cisl.ucar.edu/tcg/consweb/Fortran90/F90Tutorial/tutorial.html

Specifically, start with "Exercises and Examples," and do Exercise 2.1

Due Feb 11, 2008

Item Assignment #3, 4
#3: Due this Wednesday, Feb 6
In Visual Basic for Applications for Excel, create a macro that puts the numbers 1 through 13 in cells A1 through A13. If possible, do so using the functionality in which you can drag to extend an existing pattern of numbers. Copy the text of the VBA macro which was created, and submit that.

#4: Due next Monday, Feb 11
Write two UDFs (User Defined Functions), with meaningful names of your own choosing. The first should take in X and Y and return X times Y. The second should take in X and return X factorial.

Item Assignment #1, #2
1. Give a short evaluation (a few sentences) of Stroustrup's paper on Generalized Operator Overloading for C++ 2000 in terms of readability and writability.

Due approximately Monday, Feb 4.

2. Take some programming language you know and discuss its positive and negative aspects in terms readability, writability, and reliability. (Two or three paragraphs.)

Due approximately Monday, Feb 6.

Monday, May 26, 2008

subst in Prolog, pt i

The assignment:
"Write subst(A,B,C,D) where list D is list C with element A substituted for all occurrences of element B."

The first case we want to handle is the base case. That is, if we have the empty list, it does not matter what A and B are, because there is nothing to replace. Therefore:
subst(A, B, [ ], [ ]).

Or, because we are using neither A nor B, we can write:
subst(_, _, [ ], [ ]).

The alternative is that we are not dealing with an empty list. In such a situation, we want to define subst recursively, such that we yank out the first element -- the head -- if it is B, and replace it with A. Unless of course the head is not element B, in which case we want to just leave it alone -- that is, put the head back on the list.

The way we pull apart such a list is as [H | T], where H is the head and T is the tail.

More on this later, but hopefully this gets you on the right track. It does not have to work exactly.

Wednesday, May 14, 2008

8, 9, 10, 13, 15, 16

ch 8 -- control structures p 324 and on
if-fi
do

od

ch 9, ch 10: parameter passing
skip 380-387
focus on coroutines, on page 391

in ch 10, statis links, dynamic links

skip ch 11, 12, 14

do chapter 13

http://docs.google.com/Doc?id=ajbqhgmq9qdz_110cscw9cc7

Monday, May 12, 2008

Common Lisp Tutorial

http://www.notam02.no/internt/cm-sys/cm-2.2/doc/clt.html

Thursday, May 08, 2008

Not Equal In Prolog

After consulting with this website, actually connected with pop11. :)

The following interaction from SWI-Prolog when consulting j.pl. Use similar code to make sure sally is not her own sibling.

% c:/j.pl compiled 0.00 sec, -292 bytes
11 ?- listing.


myneq(A, B) :-
A\=B.

Yes
12 ?- myneq(a, a).

No
13 ?- myneq(a, b).

Yes

Monday, April 28, 2008

Download PopLog, a Free Lisp Interpreter

Here

After installing, modify the shortcut to have a +clisp after the +startup. Try out the examples from the Wikipedia page on Lisp,

http://en.wikipedia.org/wiki/Lisp_%28programming_language%29

aside from any Lisp homework I may assign.

Friday, April 04, 2008

Video Solutions for HW 7 and 8

Available here.

Wednesday, April 02, 2008

Prolog

SW-I Prolog is a Prolog that works.

http://www.swi-prolog.org/

we will work through the examples here:
http://www.ling.helsinki.fi/kit/2004k/ctl272/Bangor/clbook.html

Wednesday, March 19, 2008

All About Gotos

Read this article from Knuth, "Structured programming with go to statements"

Friday, March 14, 2008

Homework: Implement a CFG

You can watch the video detailing the assignment here:
http://www.girsology.com/proglang/

And as soon as Revver approves the video, I will embed the video in this post as well.
Update: Here it is:

Wednesday, March 05, 2008

class notes for today

type
colors ( red, blue, green, yellow, orage, white, black);

colorset = set of colors;

var
set1, set2 : colorset;

set1 := [ red, blue, yellow ];
set2 := set1;
set2 := [black, blue ];

if (ch = 'c' or ch = 'r' or ch = 'y')

if (ch in ['c', 'r', 'y'])

if (c in colorset)

as bitset

['a' ... 'p']

foo()
{
int * p, *y;
p = &f;
p = y;

cout *p;

cout p;
p = y;
*p = *y;
p =: y;
p =: f;


int * p = new int [100];

p = new int [100];

*(p + 7);
p[7];
cout 7[p];
*(7 + p);

int &r = t;

r
*r

}


Tombstone
lock and key

int *y;
foo()
{
Int *p;
p = new int;
y = p;
}

eager approach
lazy approach

refernce counting
garbage collection

The Three-Register Garbage Recycler, or Nodes for Free, by David Wise

"The Three-Register Garbage Recycler, or Nodes for Free," by David Wise. Use the links to the image.

Questions to follow, or perhaps I will ask someone to present.

Read this paper on Distributed Cyclic Reference Counting

Read this paper on "Distributed Cyclic Reference Counting" by Frank Dehne, Rafael D. Lins.

Questions on the paper to follow. Or perhaps I will ask someone to summarize the paper.

Monday, March 03, 2008

Some class notes

1 4 6 8 5 32 0 -1
1 4 6 8 5 3 2 0 -1
1 8 2 4 5 0 6 3 -1
int list[10];cout list[k];
address(list[k]) = address(list[1]) + (k-lowerbound)*el_size= address(list[1])- lowerbound*el_size + k*el_size
descriptor for arrays_________arrayelem typeindex type# of dimensionsindex upper boundindex lower boundaddress
// using ] in place of greater than because of html%salaries = ("Cedric" =] 75000, "Perry" =]56000);$salaries{"Perry"} = 70000;$s = "Josh";$salaries{$s} = 8000;if exists $salaries{"Shelly"}delete $salaries{"Perry"};%salaries = ();
01 EMPLOYEE-RECORD 02 EMPLOYEE-NAME 05 FIRST PICTURE IS X(20) 05 MID PICTURE IS X(20) 05 LAST PICTURE IS X(20) 02 HOURLY-RATE PICTURE IS 99V99
01 employer-record 02 employer-name 05 FIRST PICTURE IS X(20) 05 LAST PICTURE IS X(20) 05 SSN PICTURE IS X(20)
FIRST OF EMPLOYEE-NAME OF EMPLOYEE-RECORD
FIRST OF EMPLOYEE-RECORD
STRUCT A{ STRUCT B { INT X; INT Y; } J; CHAR Z; } H;
H.J.X
class a{ int i; char * p; string g; a() { p = new char [60]; ~a() { delete [] p; }};
a b, c;
b = c;
b.g = c.g;
move corresponding employer-record to employee-record
dynamic variables as discussed in the papermain(){ int x, y; int z; set z : int = x -4 in { foo(); bar(); } bar();}
foo(){ int a, b; use z : int in { cout z;
}}
bar(){ int q; set z : int = q -4 in { foo(); }}

Wednesday, February 27, 2008

Homework #11: Variables With Dynamic Scope

Read this article at Microsoft Research about "Dynamic Variables." Do not read the Appendix to the article just yet, only the main body of the article.

Answer the following questions:
1) List two purposes for which they envision using these dynamically scoped variables?
2) Choose one of those two, and motivate it. That is, show what the code would look like when not using dynamic variables, and then what it would look like with dynamic variables.
3) Briefly describe the "simple" and the "novel" implementations.

Monday, February 25, 2008

Homework #10

1. Read this article about regular expressions in Word, and try the find and replace example in the article.

2. Read the Wolfe article posted on blackboard, "Nesting In Ada Programs Is For The Birds," and answer the questions: Give four reasons why nesting in Ada programs is for the birds. What is the authors' suggestion?

class notes from today

some prolog:

father (terach, avraham).
father (avraham, yitzchak).
father (avraham, yishmael).

brother (A, B) :- father(C, A), father (C, B).

?- brother (yitzchak, yishmael)
True

?- brother (yitzchak, Z)
yishmael

floating point:
_______________
sign bit
exponent
fraction

decimal
_____________
part before decimal pt.
part after decimal pt.
1060 = 10.60


integers
______________
sign magnitude notation
two's complement
one's complement

descriptors for:

static length string

--------------
string
length
address
_________________

limited dynamic length string

_-________________________
limited dynamic string
maximum length
current length
address
___________________________

enum temperature { hot, cold, freezing };

enum proximity { near = 6, cold = 7, freezing =8};
proximity::cold

Thursday, February 14, 2008

Some Class Notes

int x[6];

int n;
cin >> n;
int x[n];

int * x = new int [n];
Backus-Naur Form
BNF
CFG - Context Free Grammar

Josh
josh

int int;

REAL APPLE;
INTEGER REAL;
REAL INTEGER;

int shakespeare;
shakespencil = 60;


FSA which recognize regular languages
NFA is equivalent to an FSA

regular langs are closed on the Operations of union, concatenation,
and kleene star

E is the input alphabet
G is the output alphabet

PDA = Push Down Automaton
can recognize CFLanguages,
which can be described with CFG, BNF

Wednesday, February 13, 2008

Getting Fortran to Run

I am still working on getting FORTRAN installed in the labs, for G95. In the meantime, on your own personal machines, you can try installing the Silverfrost FTN95 compiler. It is free for personal use, but has an annoying screen before running any of your programs. And it integrates with the Visual Studio 2005 IDE, with makes it much easier to test out your programs. And it color codes keywords, and lets you step through the code, and so on. I tried it, and it worked with no headaches setting it up.

Tuesday, February 12, 2008

HW #8, with video intro

Not to be confused with homework #7.

#8:
Using VBA for Excel, implement the first FSA from assignment #5. On the spreadsheet, include a formal description of the FSA. This includes the transition function delta. Rather than using Gotos, keep a variable which maintains the present state, and look up the appropriate transition to the next state, based on the present state and the input, from that lookup table on the Excel worksheet.

You can download the video here.

Monday, February 11, 2008

Class Notes

LISP
(A B C D)
(A (B C) D)


Three operations closed on regular languages
Union
Concatenation
Kleene star
Kleene plus

A = { boy, girl}
B = {bad, good}

A.B {boybad, girlbad, boygood, girlgood}

C = {boy}
A* = { epsilon, boy, boyboy, boyboyboy, girl, girlboy, boygirl, girlgirlgirl, girlgirlboy

C* = { w^n | n >= 0, w is an element in C}

ab*a(a|b)


((a|b|c).a)+
((a|b|c).a). ((a|b|c).a)*

1 + 2

Sunday, February 10, 2008

HW #9: More Fortran

Due Feb 13.

In the tutorial, work through hands-on-exercise 2.2 and 2.3. For the former, you might find this video of some help.

You can download the video here:



The purpose of exercise 2.2 is to give you some experience reading a real Fortran program and understanding it to the level of being able to make some simple modifications. In exercise 2.3, we are introduced to internal functions, which are limitations of the scope of functions to within the program. This will help you apply what you read, to modify program 2.2 further. And more than that, it will give you practice in writing functions, and understanding in how they take in their parameters and how they give back their return value. Part of the assignment is also to give me the meaning of "intent" in this context. Google is your friend in this regard.

Homework #7, 8

We continue with the Excel VBA assignments, and will be implementing various finite state automata (FSA). To be announced, discussed in class on Monday.

#7: Due Wednesday, Feb 13
Using VBA for Excel, implement the first FSA from assignment #5. Read the input string from cell B1. Print "accept" or "reject" in C1. Print the sequence of states in cell A4 and down (A5, A6, etc). Use gotos and goto labels to represent the states. Use the MID function to extract letters sequentially from the input string.

You can download the video here.



#8: Due Monday, Feb 18
Using VBA for Excel, implement the first FSA from assignment #5. On the spreadsheet, include a formal description of the FSA. This includes the transition function delta. Rather than using Gotos, keep a variable which maintains the present state, and look up the appropriate transition to the next state, based on the present state and the input, from that lookup table on the Excel worksheet.

Video to come.

Thursday, February 07, 2008

Homework #6 Solution

Here is a walkthrough of installing the G95 FORTRAN compiler and getting the Hello World program up and running.

You can download the video here.

Wednesday, February 06, 2008

Homework #5

In the Sipser book, and up on Blackboard. Look at the FSAs and answer the questions.

Homework #3 Solution



See the assignment definition here.

You can download the video here.

Some formal definitions from class about FSA

A finite automoton is a 5-tuple (Q, E, delta, q0, F)
(We are using E for Sigma)

1. Q is a set of states
2. E is set called the alphabet
3. delta: Q X E -> Q is the transition function
4. q0 an element in Q is the start state
5. F subset of Q is the set of accept states

If A is the set of all strings accepted by FSM M, then Machine M recognizes A; could say accepts A. A is the language of machine M.

Also, we finished chapter 2's coverage of the FORTRANs, in the Concepts of Programming Languages book.

FORTRAN Assignment 1 (HW Assignment 6)

Download G95 (sidebar) and install it on your computer. Name the files *.f90 to be able to use FORTRAN 90 syntax. If you name it *.f, you will have annoying restrictions, such as the first 6 characters on a line being reserved. Read through the beginning of the tutorial, here. Specifically, start with Exercises and Examples, and do Exercise 2.1

Monday, February 04, 2008

Homeworks #3, 4

#3: Due this Wednesday, Feb 6
In Visual Basic for Applications for Excel, create a macro that puts the numbers 1 through 13 in cells A1 through A13. If possible, do so using the functionality in which you can drag to extend an existing pattern of numbers. Copy the text of the VBA macro which was created, and submit that.

#4: Due next Monday, Feb 11
Write two UDFs (User Defined Functions), with meaningful names of your own choosing. The first should take in X and Y and return X times Y. The second should take in X and return X factorial.

Sunday, February 03, 2008

Class 2

First:
From class 1: go over readability, writeability.

Then:
Class 2 from last time. Go over some of the features of language. Get to the beginning of FORTRAN. Much better reading than presenting, so it is a good reason to just get the book.

And introduction to a bit of VBA for Excel.

Then, beginning of other book. What is a Finite State Automaton? An state, a start state, an accept state, a transition, a state transition table. What is the language recognized by a specific FSA?

Thursday, January 31, 2008

How to drop files into the Digital Dropbox

and send them to the instructor.



I'll go over this in class.

Wednesday, January 30, 2008

Homework #1, #2

1. Give a short evaluation (a few sentences) of Stroustrup's paper on Generalized Operator Overloading for C++ 2000 in terms of readability and writability.

Due approximately Monday, Feb 4.

2. Take some programming language you know and discuss its positive and negative aspects in terms readability, writability, and reliability. (Two or three paragraphs.)

Due approximately Monday, Feb 6.

Welcome to the Programming Languages course

Here is a link to Robert Sebesta's website. He is the author of the main book for the class, and on that website he has a bunch of slides, which we may make use of.

Concepts of Programming Languages (5th Edition)

Here is a link to the book on Amazon. It is called Concepts of Programming Languages (5th Edition). Please note that we are using the 5th edition. It costs $109 new, or actually $2 new and 39 cents used if you follow the link to "used and new," something I would advise.

We will hopefully get Blackboard up and running for this course soon.

Tuesday, January 29, 2008

Regular expressions

For later.

Here are some interesting articles on wildcards and regular expression matching. We might cover some of this. Don't worry if you can't understand this just yet.

  1. Add Power to Word Searches with regular expressions
    • this is somewhat powerful, but it is fairly easy to encounter limitations to its power.
  2. Putting Regular Expressions to Work in Word
    • A follow up article. We might try going through these examples.
  3. Regular Expressions in Excel
  4. Regular Expressions in Visual Studio