I revived and taught this undergraduate elective course in Spring 2000. I taught it again in Fall 2001 in conjunction with a graduate special topics course on the same topic. I used the process-interaction approach and the Java programming language. (In the 2003-10 period, Dr. Steve Rice taught a different version of this course.)
I developed this course and first taught it during Spring 1991 semester. I taught it for the 14th time in Spring 2016. During the Fall 1993 semester I wrote a draft of an extensive set of lecture notes that has continued to evolve. For most offerings, I uses the lazy functional programming language Haskell, but I used the functional subset of Scala Spring 2016.
I developed this course and taught it for the first time in Fall 2008 as a CSci 581 Special Topics course. I subsequently created a new course CSci 556 for this material and taught it in Spring 2012. The first three offerings of this course focused on use of the language Scala, which combines the object-oriented and functional paradigms and executes on the Java platform. However, for the Spring 2015 offering, I experimented with the new language Elixir.
CSci 581, Special Topics on Object-Oriented Design and Programming.
I developed and taught this topic in Fall 1997 to introduce graduate and advanced undergraduate students to object-oriented techniques at a deeper level that was being taught in lower-level courses at the time. I taught a modified version of the course during the spring 1999 semester. Beginning in Fall 2000 I combined a portion of this material into the the Software Architecture topics course.
I developed this course and taught it during the Fall 1990 and Fall 1991 semesters to use the UNITY notation and programming logic. I developed an alternative version of the course based on PCN and first taught it during Spring 1993. I did the first half of the Fall 1997 semester with a theoretical approach and the second half with a more pragmatic approach that emphasized Java threads programming. I revised the course again to use Labeled Transition Systems and Java in Fall 1999, an approach I used in the Spring 2005 and Fall 2009 offerings.
Engr 691, Special Topics on Software Architecture.
I developed and taught this course during Spring 1998. I revised it further for the Fall 2000, Spring 2002, and Spring 2004 offerings. I have used some of this material in subsequent classes, such as the Spring 2010 special topics offering on Software Design and Scala Programming as CSci 490-1 and Engr 596-6.
This lecture-based course focuses on development of software families–in particular frameworks and product lines. The Fall 2007 and Fall 2011 offerings were similar to the Fall 2003 offering of Engr 660. The latter offering used Scala instead of Java for the programming examples. Subsequent offerings will be given under a new CSci 600-level number.
Engr 691, Special Topics on Software Language Engineering
This lecture-based course, first taught in Spring 2009, focuses on development and processing of domain-specific languages. I subsequently taught the material in Spring 2011. This was formalized as CSci 658, Software Language Engineering, for the Fall 2013 offering.
Engr 692, Special Topics on Ruby and Software Development.
I taught this topic on the Ruby programming language and its implications for software development in Fall 2006.