Overview
Objectoriented Software Principles is a course that introduces
students to some fundamental principles and techniques in objectoriented
programming. Howewer, there is always logic before principles and
techniques. We plan to spend the first half of the course on logics:
propositional logic, predicate logic, linear (propositional and predicate)
logic, etc. In the second half of the course, we are to make use of some
concerete and interesting examples to demonstrate a programming style that
unifies formal specification (based on the logics presented in the first
half) with implementation. In particular, we are to make essential use of
linear types to model objects accurately as well as effectively. At the end
of course, we will also give a brief introduction to linear temporal logic
(LTL).
Prerequisites
 Familiarity with programming in general.
 CS320 (Concepts of Programming Languages) or equivalents.
TextBook
Reference Books
Programming Languages
 ATS
(this mode may be helpful if you
use emacs to edit ATS source code)

Multiple Inheritance for C++ (mi.pdf)

Monday, the 20th of February, 2012: No Class (Holiday)

Tuesday, the 21st of February, 2012: Substitute Monday's Schedule

Week of March 1218: No class (Spring Recess)

Monday, the 16th of April, 2012: No Class (Holiday)

Wednesday, the 18th of April, 2012: Substitute Monday's Schedule

Wednesday, the 2nd of May, 2012: Last Day of Class
 Assignment 1: Due on Wednesday, the 25th of January, 2012
Links:
(assignment.dats)
 Assignment 2: Due on Wednesday, the 1st of February, 2012
Links:
(assignment.sats)
(assignment.dats)
 Assignment 3: Due on Wednesday, the 8th of February, 2012
Links:
(assignment)
 Assignment 4: Due on Wednesday, the 15th of February, 2012
Links:
(assignment.dats)
 Assignment 5: Due on Wednesday, the 22nd of February, 2012
Links:
(btree.dats)
 Assignment 6: Due on Wednesday, the 29th of February, 2012
Links:
(GameOf24)
 Assignment 7: Due on Wednesday, the 21th of March, 2012
1. (50 points) Please use the
cairo API in ATS
to draw the following images:
2. (80 points)
Please find out online what Enigma machines are and then implement one in
ATS. I expect that you make convincing use of ATS types in specifying the
kind of Enigma machine you implement.
 Assignment 8: Due on Monday, the 9th of April, 2012
1. (40 points)
Then code in GameOf24_par
outlines an approach to parallelizing the implementation of GameOf24.
Please complete the code after your figuring out how it works.
2. (40 points) You can find a clock implementation here that makes use of GTK and cairo. Please implement a similar clock
that should NOT employ the event loop provided by GTK to handle
timestamped events; it should instead use the workshop implementation
given in Workshop2 to do so.
Note that you are expected to design and implement a clock of your own
(instead of entirely copying the one given as an example).

Midterm is due by 11:59pm on Sunday, the
15th of April