![]() Spring 2018 |
|||||
![]() |
Announcements![]() P6: SPL Program Development Due Tues April 10, 10pm P7: Gamma Due Thurs May 3, 10pm |
![]() |
Professor | Don Batory | batory@cs.utexas.edu |
office hours | Th 3:45-4:45 | ||||
![]() |
TA | Kartik Sathyanarayanan | kartik@cs.utexas.edu | ||
office hours | TBD | ||||
![]() |
Room | GDC 1.406 | |||
Days and Time | TTh 2pm-3:30pm | ||||
Unique # | 51775 | ||||
![]() |
Ground Rules | UTCS Rules to Live By | |||
Your Grades | Canvas |
||||
Final | TBD |
Prerequisites, Overview,
and
Goals
|
This
course
explores leading edge paradigms for automated
software design and software modularity from advances in:
A
spectacular example of the integration of most of these areas was
realized almost fourty
years ago: relational query optimization (RQO).
A relational
query is specified in SQL, a parser maps it to an inefficient
relational
algebra expression, a query optimizer optimizes the expression
automatically,
and an efficient query evaluation program is generated from the
optimized
expression. SQL is a prototypical declarative DSL.
Query evaluation
programs are specified as compositions of relational algebra
operations;
relational algebra is a prototype for compositional
programming. Query
optimizers achieve automatic
programming by rewriting an inefficient expression/program to
a
semantically equivalent but more efficient expression/program. The cost
models
that drive expression optimization are examples of program
analysis.
Mapping a relational algebra expression to an efficient program is generative
programming
and is an elementary example of model
driven engineering.
A
"holy grail" of
Software Engineering is to replicate the success of RQO in other
domains. Feature
Oriented Software Development is a generalization,
and its ideas are at
the confluence mainstream research topics in software modularity,
program
design and program generation: OO design, product-lines, program
refactoring,
model driven engineering, program evolution, and program
transformations.
Prior offerings of this course lead to student publications and research degrees (M.Sc. and Ph.D). Some publications -- not all -- are listed below, the most recent listed last.
Programming
Assignments
|
All programming assignments will use Java. We will use the following software, all of which is free to UTCS students, and all of which has been installed in the UTCS public labs. The following is for Windows Platforms. If you use Apple or Linux machines, well, I will try to help as much as I can, but no promises!
Course
Prerequisites
|
Basic familiarity with the following topics are assumed -- all that is needed will be covered, but some prior experience helps greatly:
Lecture
Notes and Texts
|
Lecture notes posted online after the lecture as downloadable PPTX files. Links to the lectures are given below in the Course Outline. There is a required text for this course:
This
text is now available as a Kindle ebook
from Amazon.
Hint: I am unimpressed with todays
ebooks.
They
are as expensive as hard copies and ebook
software sucks.
Your
call. As a free
alternative -- a
progenitor of this text is Pierce's 1988 CMU Tech Report "A taste of category
theory for computer scientists", which
I have annotated.
Class
Grades, Projects, and Homework
|
Final
grades will be determined approximately by the following
scheme:
All programming projects are to
be submitted through Canvas.
Extenuating
Circumstances
|
If
you have
difficulty meeting the requirements of this course, fail to hand in an
assignment, or miss an exam because of extenuating circumstances,
please advise
the instructor in writing at the earliest possible date so that your
situation
can be discussed. If you encounter an unexpected medical or family
emergency or
a random act of Nature that causes you to miss the due date for
homework or
miss a quiz or exam, you must present suitable documentation in writing
to the
instructor before special consideration will be given. A file of all
written
correspondence will be kept by the instructor and decisions regarding
them will
be made at the end of the semester.
Schedule
|
Numbers in [brackets] indicates the estimated number of lectures on a topic. The number indicated is a lower-bound, as there will be classroom discussions to work on problems and review of homework assignments. Papers that are listed below are required readings and are accessible via its web link. The order in which topics are presented might be changed as the class progresses.
The syllabus on the first day of class
is here (to be posted after
the first class), as I do
modify this page as the course progresses, like posting new assignments,
readings, and lectures.