This course focuses on high-level concepts that are mostly oblivious to choices of programming languages and environments. However, in order to provide concrete realizations of these concepts, we will use PostgreSQL and SQLite as the primary database systems, Java and Python as the primary programming languages, and POSIX as the primary operating system environment. Submissions will be in the form of packaged, well documented source ﬁles. Proper documentation and packaging of source code and other material is a crucial component of assigned work and submissions failing in this regard will receive no credit.
Programming Environment and Tools: You are free to choose details such as operating system, development environment, and editor based on your preferences. However, no matter what you use, the submission should be a source-code package that works on the host aturing (see below). Further details on the packaging, submission, and testing procedure will be provided in class and on the newsgroup.
Other Languages: If you prefer to use other programming languages or systems, please contact me by the second class meeting. I am quite open to the idea, and encourage interested students to explore it further. However, please check with me very early in the semester so that we can determine the speciﬁcs to make sure your submissions can be tested and graded fairly. You should avail of this option only if you are conﬁdent enough of your programming skills to not require any programming help, and are prepared to take on additional work. This option is designed for students who are proﬁcient in Java and wish to use this opportunity to master another language, not for students weak in Java and who wish to avoid them. Anyone granted this option will still be responsible for all the material related to the default languages and systems used in the course.
Literate Programming: All submitted work must use a literate programming style: Your programs must be designed with a human as the intended reader, although they must also compile and run correctly. Programs that do not meet this requirement are likely to receive a zero score with no further consideration. Details will be discussed in class. The use of any speciﬁc literate-programming or documentation tool is neither necessary nor suﬃcient for this requirement.
Class accounts: Shell and PostgreSQL will be generated on the host aturing.umcs.maine.edu based on registration records. These accounts are required for successful completion of homeworks and other assignments. You should be able to access your accounts from anywhere on the Internet by using ssh. On most Unix-like hosts (GNU/Linux, Mac OS), the command ssh -l username aturing.umcs.maine.edu should suﬃce. For Windows hosts, the freely available Putty program works well.