Engr 692: Special Topics in Engineering Science
(Ruby and Software Development)
Fall 2006
Lecture Notes
-
Lecture Notes on Data Abstraction (Java content not discussed):
[slides]
Supplementary notes: Queue ADT
Supplementary ADT Case Study:
Ranked Sequence
- Nell Dale and Henry Walker. "Abstract Specification Techniques,"
Chapter 1, In Abstract Data Types: Specifications,
Implementations, and Applications, pp. 1-34,
D. C. Heath, 1996.
Solution to Homework #1
- Understanding Inheritance (Budd's UOOPJ, Chapter 8):
[slides]
- Introductory Ruby:
[Session 1]
[Session 2]
- Employee ADT in Ruby:
[source code]
[63-line paginated listing]
- Natural number ADT in Ruby:
[source code]
[63-line paginated listing]
[older, simpler Java version]
- Background on design patterns:
-
Introduction to Design Patterns
- Designing with Patterns,
prepared by Yi Liu and Conrad Cunningham.
- Inverted index program in Ruby:
[source code]
[63-line paginated listing]
- Simple expression recognizer in Ruby:
[source code]
[63-line paginated listing]
[older Haskell version]
- "Modules," Chapter 9, in Dave Thomas, with Chad Fowler, and Andy
Hunt. Programming Ruby: The Pragmatic Programmer's
Guide, Second Edition, The Pragmatic Bookshelf, 2005.
- Using Procs and lambdas (examples):
[63-line paginated listing]
- Martin Fowler. Language Workbenches: The Killer-App for Domain
Specific Languages?
http://www.martinfowler.com/articles/languageWorkbench.html, June
2005.
[author's website]
[local copy]
- Martin Fowler. Generating Code for DSLs,
http://www.martinfowler.com/articles/codeGenDsl.html,
June 2005.
[author's
website]
- Conrad Cunningham. Ruby version of Fowler's DSL framework.
- Jim Weirich. "Rake Tutorial," "Rake User Guide," and "Rake by
Example," 2005.
(Basic ideas discussed.)
[Ruby Rake web site]
-
Jim Freeze. Creating DSLs with Ruby,
Artima Developer,
http://www.artima.com/rubycs/articles/ruby_as_dsl.html,
March 2006.
[Artima website]
[local printer-friendly copy]
- Jamis Buck. Writing Domain Specific Languages,
the { buckblogs :here }, 20 April 2006.
[blog entry]
- Jon Bentley. "Programming Pearls: Little Languages,"
Communications of the ACM, Vol. 29, No. 8, pp. 711-721,
August 1986.
[PDF]
- Conrad Cunningham. Domain-specific language for simple surveys:
[Ruby source code]
[test DSL input file]
[test DSL input file with errors]
- (Not discussed explicitly.) Marjan Mernik, Jan Heering, and
Anthony M. Sloane. "When and How to Develop Domain-Specific
Languages," ACM Computing Surveys, Vol. 37, No. 4,
pp. 316-344, Decembver 2005. (Not discussed extensively.)
- Mechanisms for Software Reuse (Budd's UOOPJ, Chapter 10):
[slides]
- Replacement and Refinement:
[slides]
- Implications of Inheritance (Budd's UOOPJ, Chapter 11):
[slides]
- A Second Look at Classes:
[slides]
- "Classes and Objects," Chapter 24, in Dave Thomas, with Chad
Fowler, and Andy Hunt. Programming Ruby: The Pragmatic
Programmer's Guide, Second Edition, The Pragmatic Bookshelf,
2005.
- Jim Weirich. Dependency Injection in Ruby,
{ | one, step, back | } , October 2004.
[blog entry]
- Martin Fowler. Inversion of Control Containers and the Dependency
Injection pattern,
http://www.martinfowler.com/articles/injection.html, January 2004.
[author's
website]
- Domain Modeling:
[slides]
- (Not covered.) James Coplien, Daniel Hoffman, and David Weiss,
Commonality and Variability in Software Engineering, IEEE
Software, November/December 1998.
[paper]
- Sam Ruby. "Continuations for Curmudgeons," Intertwingly (blog),
http://www.intertwingly.net/blog/2005/04/13/Continuations-for-Curmudgeons
April 2005.
[blog article]
[Fibonacci program]
- (Added later.) Martin Fowler. "Domain Specific Langauges," work
in progress for a book, February 2008.
http://www.martinfowler.com/dslwip/.
[Author's website]
UP to ENGR 692 root document?
Copyright © 2008, H. Conrad Cunningham
Last modified: 14 Sep 2008