1 | Due 29 Sept. | Make an interpreter for a simple programming language along the lines discussed in class. The
language must include at least expressions involving addition, subtraction, and parentheses,
an assignment statement and a print statement. Your interpreter should be capable of parsing
a whole program, printing its representational tree, and running it. E-mail it directly to me, not to grader. Send me a sample run along with your program. | ||||
2 | Due 30 Nov. | assignment, DEM files, alphaplaces. Remember I need screen-shots too. | ||||
3 | Due 13 Dec. | Make your programming language useful. It needs loops and conditionals and statements for input and output. It should be something that is actually useful to have around. It needs to have a symbol-table implemented as a hash table. Send me a good demonstration run as well as your program. | ||||
4 | Due 13 Dec. | Improve your map assignment. The user should be able to zoom in or out, select two locations,
and be shown the shortest route between them using major roads. Convenient driving
instructions should also be provided in text. Here are the road and intersection data sets. Remember I want screen shots as well as your code. |
Class 1 | Thurs‑27‑8‑2009 | General introductions, what more could there be to learn about programming? | ||||
Class 2 | Tues‑1‑9‑2009 | Designing a nice self contained object to simplify input with complex structure. | ||||
Class 3 | Thurs‑3‑9‑2009 | The problem of parsing: producing a tree that repreents the structure of an expression. | ||||
Class 4 | Tues‑8‑9‑2009 | Separate compilation (.cpp, .h, and .o files). Beginning an object oriented parser for a programming language. | ||||
Class 5 | Thurs‑10‑9‑2009 | The basic plan for reading and executing programs. | ||||
Class 6 | Tues‑15‑9‑2009 | A summary of today's developments. Sequences of statements, assignments, parentheses, etc. | ||||
Class 7 | Thurs‑17‑9‑2009 | Review of constructors, pointer creation, new, delete, etc.; considering conditional statements and the full variety of operator priorities. | ||||
Class 8 | Tues‑22‑9‑2009 | Considering the map object. Class diagrams (UML), using "protected" to allow invisible implementation changes, the Hash function, unsigned, the problem with -231, introducing Hash Tables. | ||||
Class 9 | Thurs‑24‑9‑2009 | Probabilities for hash tables, Poisson distribution, collisions, the need for collision resolution; linear probing is not too good, hash table is array of linked lists; resizing table when overfull gives fast constant average access time. | ||||
Class 10 | Tues‑29‑9‑2009 | Programming at a lower level: C strings, strcpy, strlen, etc,
Scratchy notes. Seeing where things are in memory, the experiment. | ||||
Class 11 | Thurs 1‑10‑2009 | Complicated pointer type-casts, objects in memory, accidents with arrays and pointers, the pointer to anything type "void *", the conformity clause. Today's example. Details of the floating point representation. | ||||
Class 12 | Tues 6‑10‑2009 | Inheritance, no duplicated code, "pointer to anything", constructor call sequence,
static members, virtual methods. Pet Club. | ||||
(Wed‑7‑10‑2009 | Academic alerts due) | |||||
Class 13 | Thurs 8‑10‑2009 | Virtual methods for tree nodes. Pure virtual, what ** can mean in C++, variable parameter lists, macros are evil. | ||||
Class 14 | Tues 13‑10‑2009 | The Missing Day. | ||||
Class 15 | Thurs 15‑10‑2009 | Getting sense and value from virtual methods: today's developments. | ||||
Class 16 | Tues 20‑10‑2009 | Defining terms, and the technicalities of various constructors and operators.
Today's notes, considerably enhanced. | ||||
Class 17 | Thurs 22‑10‑2009 | Investigating a non-text file. od, fopen, printf, fprintf, fgetc, fclose. The experimental program, and the data files. | ||||
Class 18 | Tues 27‑10‑2009 | Expect on the test: Parsing, Hash tables, C strings ptrs etc, Inheritance etc. Binary unformatted files: open, read, write, close. classroom scratchings, also see here. special notes for windows/visual studio. | ||||
Class 19 | Thurs 29‑10‑2009 | Mid Term Test. | ||||
Class 20 | Tues 3‑11‑2009 | Dealing with large inter-connected data sets, starting to think about
shortest-path algorithms. Negative Nebraska, Positive Nebraska. | ||||
Class 21 | Thurs 5‑11‑2009 | What we learned from the test. | ||||
Class 22 | Tues 10‑11‑2009 | Shortest path by treating a graph as a tree, recursive depth-first search with branch-and-bound. | ||||
Class 23 | Thurs 12‑11‑2009 | A good shortest path algorithm (breadth first), a priority queue. Survey of attitudes towards life-long learning. | ||||
Class 24 | Tues 17‑11‑2009 | Take-home mini-test, due next Tuesday. The D algorithm for everywhere-to-everywhere shortest path calculation in cubic time, and example of Dynamic Programming. | ||||
Class 25 | Thurs 19‑11‑2009 | Dynamic Programming and Memoisation. The combinatoric function. | ||||
Class 26 | Tues 24‑11‑2009 | (the first take-home mini-test is due today) Second take-home mini-test, due 3rd December. Review of sorting methods, especially radix and merge sort, and their historical importance. | ||||
Class 27 | Tues 1‑12‑2009 | The trouble with mergesort or arrays. Quicksort, pivot choice, time and memory analysis. First thoughts on keeping data secret. The exclusive-or scheme. | ||||
Class 28 | Thurs 3‑12‑2009 | (the second take-home mini-test is due today) Cryptographic methods, one time pads, the R.S.A. algorithm, ABmodN quickly. |