This course surveys significant concepts underlying modern programming languages, including syntax, parsing, scope, functions, relations, expressions, types, assignment, procedures, pointers, encapsulation, classes, exceptions, and inheritance, with some discussion of implementation issues. It covers examples of several prominent programming paradigms, including sequential, concurrent, object-oriented, and functional programming. The programming languages mainly used to illustrate these concepts and paradigms are ML, C, Pascal, Modula-2, Ada, C++, Java, and Haskell.
Unique Numbers: 52870, 52875
R. Sethi. Programming Languages: Concepts and Constructs, Second Edition. Addison-Wesley, 1996.
Antony J.T. Davie. An Introduction to Functional Programming Systems Using Haskell.. Cambridge University Press, 1992. This book is out of print, but the parts of it we need are available from Co-op Custom Publishing as Readings from "Intro to Functional Programming Systems Using Haskell".
The following texts may be useful in case you wish to pursue some topics in greater depth than we'll be able to cover them in this course. A text's appearance in this list is not meant to suggest that you're expected to purchase it, and no reading will be assigned in any of these books.
Richard Bird, Introduction to Functional Programming using Haskell, second edition. Prentice Hall International (UK), 1998.
Norman H. Cohen. Ada as a Second Language, second edition. McGraw-Hill, 1996.
K. C. Louden. Programming Languages: Principles and Practice, second edition. PWS-Kent Publishing Co., 2002.
Niklaus Wirth, Programming in Modula-2, fourth edition. Springer Verlag, 1988.
The class syllabus, as handed out at the first class meeting, is available as an Adobe Acrobat (.pdf) document. Free Acrobat readers and browser plug-ins for most common platforms are available here.
To be eligible for CS 345, you must have completed CS 310(H), CS 336(H), and Math 408D with grades of C or better. Enrolling more than once in CS345 requires written consent of a CS academic advisor. Warning letters to students apparently not meeting these requirements will be distributed in class beginning on Wednesday 3 September; the deadline for responding is 4:00pm on Monday 8 September.
Academic code of conduct
These ground rules for members of the academic community are in effect for this class.
If you have a specific question for me or for a grader, and you want a prompt answer, e-mail will nearly always bring quicker results than the newsgroup. To contact me, please send e-mail to me (with a copy to utexas.class.cs345-richards if you like).
Our news server, news.cs, will accept connections from anywhere as long as you have a valid CS account. Just configure your news reader to supply a CS login/password.
Because there always seem to be some students who have problems reading the class newsgoup, I don't use it for posting announcements. Instead, I use this web sites announcement page.
All students are expected to be aware of announcements posted to the class web site.
Feedback from you
Students' comments and suggestions are a valuable source of improvements in the course. If you're satisfied with this course, much of the credit goes to students in semesters past (if you're not, maybe your predecessors were too reticent!).
Signed suggestions can always be sent to
by e-mail. If you prefer anonymity, leave a note in my mailbox in Taylor 2.124.
Feedback to you
Whenever a grade is recorded, for a homework assignment or an exam, I will send you an e-mail message summarizing your grades to date. The primary purpose of these e-mails is to ensure that any errors in my records are corrected promptly, but they should also give you a feeling for your standing the course.
These messages will be sent to the e-mail address listed in your university record. If your message doesn't reach you, or you would prefer me to use a different address, either send
an e-mail from the original address or hand me a note in class.
A few suggestions for students planning to ask for letters of recommendation, for graduate school admission or industrial employment, can be found here.