CS 410/520 Dependently Typed Programming, Daily Record, Spring Term 2010
Back to the class web-page.

    Introduction To Omega
  1. Monday March 29, 2009
    Due Today:
    	Bring your laptop to classs!
    Announcments:
    Class Topic:
    	Downloading Omega. See the Omega page for some simple directions.
    	Summer School Notes part 1.
    	Some sources of information about Omega<
    		Omega users manual
    		Programming in Omega
    		Generic Programming in Omega.
    	The program we wrote in class with LTE and cdStar
    Assigned today:
    	Get Omega working on your computer
    	Download Programming in Omega.
    	Read pages 1-7
    	Do exercises 1 & 2 (page 3), 3 (page 6), and 4, 5, & 6 (page 7).
    	Be prepared to discuss your solutions in class on Wednesday.
    

  2. Wednesday March 31, 2009
    Due Today:
    	exercises 1 & 2 (page 3), 3 (page 6), and 4, 5, & 6 (page 7) from Programming in Omega due today.
    Announcements:
    Class Topic:
    	Go over homework.
    	The TreeShape examples.
    	Continue with Summer School Notes part 1.
    		Witness types
    		The examples with Proof, LE, Plus, Even, etc.
    Assigned today:
    	Read pages 8-12 of Programming in Omega.
    	Do exercises 8 & 9 (page 9), 10 & 11 (page 11), and 12 (page 12).
    

  3. Monday April 5, 2009
    Due Today:
    	Exercises 8 & 9 (page 9), 10 & 11 (page 11), and 12 (page 12) from Programming in Omega due today.
    Announcments:
    Class Topic:
    	Some code we discussed last time about plus commuting and a function with
    		multiply in its type. Also two different ways to encode a less-than-or-equal
    		predicate, and relationships between them. The repEQ function and Liebniz equality.
    	Continue with Summer School Notes part 1.
    		Singleton types, Nat', Liebniz equality, computing values and proofs.
    
    Assigned today:
        Read pages 13-17 of Programming in Omega.
    	Do exercises 13, 14, 15 (page 14), exercise 16 (page 15), exercise 17 (page 16).
    

  4. Wednesday April 7, 2009
    Due Today:
    	exercises 13, 14, 15 (page 14), exercise 16 (page 15), exercise 17 (page 16)from Programming in Omega due today.
    Announcements:
    Class Topic:
    	Go over homework.
    		13 - same:: Nat' n -> LE n n;  predLE:: Nat' n -> LE n (S n).
    		14 - trans:: LE a b -> LE b c -> LE a c
    		15 - f:: Nat' b -> Plus b c -> LE b c
    		16 - sameNat:: Nat' a -> Nat' b -> Maybe(Equal a b)
    		17 - filter (a -> Bool) -> Seq a n -> exists m .(Nat' m,Seq a m)
    	Summer School Notes part 2.
    		pages 1-10, Libniz equality, and putting witnesses to work by
    			storing witness in data to enforce invariants.
    		pages 25-36, Interpreters.
    	Untyped Interpreters. See example code.
    		extend this in class using GADTs to encode typed object language representations.
    Assigned today:
    	Read Section 5, pages 31-38 of Programming in Omega.
    	Do exercise 23, pages 37-38.
    

  5. Monday April 12, 2009
    Due Today:
    Announcments:
    Class Topic:
    	Tom's exercise 17 code.
    	Summer School Notes part 2.
    		Staging the typed interpretor. Code to work on in class.
    	The code for a typed interpretor with variables.
    	Tags and Labels, reflecting names into the type-name-space. First Try.
    	Binding constructs using deBruin indices.
    Assigned today:
    	Read Programming in Omega .
    		Section 3.11, pages 17-28, Sections 5.4-5.6 pages 34-36, Section 5.8 pages 38-39,  on staging.
    		Section 3.14, pages 21-23 on Tags and Labels.
    	Do exercise 25 page 39. Use the staged interpretor and the
    		interpretor with variables we developed in class as
    		the base for your example. Implement as many 'optimizations' as you
    		can think of.
    
    
    

  6. Wednesday April 14, 2009
    Due Today:
    	Exercise 25 page 39 of Programming in Omega due today.
    Announcements:
    Class Topic:
    	After our discussion last time, I have thought of more ways to
    		view Tags and Labels as object language variables.
    		view1 - A language with a fixed number of variables, and a fixed number of variables.
    		view2 - Infinite number of positions by using natural numbers, but still a fixed number of variables.
    		view3 - Using built in Tags and Labels for infinite positions and variables.
    		view4 - Using position only. This is called De Bruijn indices.
    Assigned today:
    	Read Programming in Omega
    		Section 5.1-5.11, Omega as a meta language, pages 31-42.
    		Pay particular attention to Section 5.9
    		Do exercise 24, page 38 for next time.
    

  7. Monday April 19, 2009
    Due Today:
    	Do exercise 24, page 38 from Programming in Omega due today.
    Announcments:
    Class Topic:
    	Talk about homework. Evaluation using DeBruijn indices.
    	Finish our discussion about substitution in a system using De Bruijn indices.
    	Meta theory, reasoning about programs. Subject Reduction.
    		A helpful notes: Playing with Types.
    Assigned today:
    	Read Programming in Omega
    		Section 5.12- 5.14, pages 42-50.
    	Using the dataypes from the Subject Reduction program
    	write a function bump:: E mode env t -> E mode env t
    	that pushes every 'Shift' so that it applies only to variables
    	(or other Shifts applied to variables).
    
    
    

  8. Wednesday April 21, 2009
    Due Today:
    	Write a function bump:: E mode env t -> E mode env t, due today (see April 21 assignment).
    Announcements:
    Class Topic:
    	Balanced Trees
    	Programming in Omega
    		Section 4, pp 23-31, AVL Trees (code)
    		Appendix A, pp 64-67, Red Black Trees (code)
    	Programming with Static Invariants in Omega
    		Section 4, pp 5-10, Binomial Heaps
    Assigned today:
    	Implement 2-3 Trees. see directions.
    
    

  9. Monday April 26, 2009
    Due Today:
    	2-3 Trees due today.
    Announcments:
    Class Topic:
    	2-3 tree discussion
    	Read Programming in Omega
    		Section 6 pages 50-52.
    	Some example proofs to work on.
    
    Assigned today:
    	Programming in Omega. Exercise 27, page 55
    
    
    

  10. Wednesday April 28, 2009
    Due Today:
    	Programming in Omega. Exercise 27, page 55, due today.
    Announcements:
    Class Topic:
    	Read Programming in Omega
    		Sections 6.1, 6.2, and 6.3, pages 55-63.
    	The working example we developed in class.
    		This imports our definition of value carrying Bits.
    	The code for a correct by typing bit adder.
    Assigned today:
    	Programming in Omega. Exercises 32 and 33, page 62.
    

  11. Monday May 3, 2009
    Due Today:
    	Programming in Omega. Exercises 32 and 33 due tody.
    Announcments:
    Class Topic:
    	Go over homework.
    	More discussion about the adder. We'll continue to work on the
    	version we derived in class.
    	This imports our definition of value carrying Bits.
    Assigned today:
    	Bring a list of 1-3 items you would be interested in working through
    	as a class. This will determine what we'll do for the next week or two
    	so put some thought into it.
    

  12. Wednesday May 5, 2009
    Due Today:
    Announcements:
    Class Topic:
    	In class we developed a framework for building
    	provably correct rewrite-systems over value carrying bits.
    	The code we developed.
    
    Assigned today:
    

  13. Monday May 10, 2009
    Due Today:
    Announcments:
    Class Topic:
    	Tom suggested a way to describe correct compilers.
    		The original stack based compilation algorithm.
    		An extended version using type indexes to ensure correctness.
    Assigned today:
    	Extend the extended version above in some manner.
    

  14. Wednesday May 12, 2009
    Due Today:
    	Extensions to the extended version of the stack based compiler due today.
    Announcements:
    Class Topic:
    	We developed an extension to the compiler to stack code that
    	handles multi sorted expressions and conditions.
    Assigned today:
    

  15. Monday May 17, 2009
    Due Today:
    Announcments:
    Class Topic:
    	Jake suggested looking at evolutionary programming, encoded
    	by typed functions that evolve.
    	A generator of typed functions, see the code using GADTs in Haskell.
    Assigned today:
    	Extend the work above by
    		Functions for crossover
    		Functions for mutation
    		Evaluation of Expressions into functions
    		Randomize expression generation
    

  16. Wednesday May 19, 2009
    Due Today:
    Announcements:
    Class Topic:
    	Tim added some extensions to create real Haskell
    		functions from the generated functions: code.
    	Tom added some functions to randomly create functions: code.
    	Jake added some functions to perform crossover: code.
    	Dominic added code for random mutation of a term: code.
    Assigned today:
    

  17. Monday May 24, 2009
    Due Today:
    Announcments:
    Class Topic:
    	We started formalizing a cache coherency protocol suggested by Dominic.
    		code here.
    Assigned today:
    	Think about additional constructors for the OK judgement.
    

  18. Wednesday May 26, 2009
    Due Today:
    Announcements:
    Class Topic:
    Assigned today:
    

  19. Monday May 31, 2009
    Memorial Day Holiday -- No Classes
    

  20. Wednesday June 2, 2009
    Due Today:
    Announcements:
    Class Topic:
    	We discussed encoding a Learning Graph, where some
    	steps have prerequisites, can we enforce that prerequisites
    	always exist?  See our code.
    Assigned today:
    

  21. ?day June 7,8,9,0r 10, 2009
    Final Exam Block:
    
    End of Term Celebration.
    

Back to the class web-page.