| CSC 8310 Linguistics of Programming Languages: Syllabus
Dr. David Matuszek, Mendel 160C, (610) 519-5654 Villanova University, Spring 2001 |
URLs
| Home page for this class: | http://www.csc.vill.edu/~dmatusze/8310/index.html |
| Home page for this instructor: | http://www.csc.vill.edu/~dmatusze/spring2001index.html |
| Instructor's e-mail address: | dave@acm.org |
Purpose
The purpose of this course is twofold: to give you a deeper understanding of how
conventional languages work, and to introduce you to a broad range of other programming
paradigms. These two goals are quite different, so you are actually getting two courses in
one.
Because you need Java, this course will introduce you to as much Java as we can cram in; but bear in mind that Java is a huge language, and we can really only get started. However, times change, languages change, and what's "in" today will be "out" tomorrow. I've had to use many different programming languages over the years, and you probably will, too. The practical goal of this course is provide you with the knowledge you will need in order to learn new languages quickly and well.
Assignments and tests
Experience is the best teacher. The way to get experience with programming languages is to program in them. Accordingly, you will be expected to write at least one program in each of four languages. The languages I expect to cover are:
Of these, Java is the only really "practical" language. However, this is not primarily a Java course; if you want a good working knowledge of Java, this course will do little more than get you started.
There will be four quizzes, and no final exam. Each quiz will cover one language (Prolog, Java, Lisp, and Perl) along with some theoretical material.
Each program will be worth 100 points. Programs that don't work at all (for example, they still have syntax errors) are worth zero points. Unless specified otherwise, programs are due at the beginning of class three weeks after they are assigned. Late programs will lose 5 points per week (not counting weeks that we do not have class).
You can get extra credit on any programming assignment by doing more than is required. To get extra credit, you must
readme.txt
file). The grader for this course will have a lot of programs to grade,
and can't spend a lot of time figuring out what extra work you may have done.
For the same reason, if you include a readme.txt file, please
keep it short and to the point.Each quiz will be worth 100 points. This means that not turning in a program is equivalent to getting zero on a quiz. The programs are important in determining your final grade.
In previous courses I have typically given about half As (including A-) and half Bs (B- to B+), with just a few lower grades. Although this is not any kind of guarantee, I will most likely do the same in this course.
Textbooks and other materials
The
Java textbook that I recommend is Essential
Java 2 Fast, by John Cowell, ISBN 1852330716. I really like this book; it
does what the title promises. However, if you prefer another book, that's fine,
too. Here are some additional recommendations
for books and online Java materials.
The
Burks 5 CD set is a fantastic resource; it contains documentation,
tutorials, and compilers for over 20 languages, including all those that we
will be covering in this course. But please do not use Villanova resources
to print out materials; either read them on-line, or find somewhere else you
can legitimately print them.
The Burks CD set is also available online (http://burks.bton.ac.uk/), but the CDs are inexpensive and much more convenient. The only change that might affect this class is that Burks can no longer distribute Sun's Java compiler, so Burks 5 has IBM's Java compiler, Jikes. Jikes has a very good reputation: it's said to be better than Sun's compiler. It's the same language and the only difference should be in how you run the compiler, not in what it does.
Ethics
Students are expected to conduct themselves in an ethical, professional manner.
You are expected to abide by the Villanova
Policy on Academic Integrity. All projects and homework assignments should
be done on an individual basis unless explicitly stated otherwise by the professor.
All questions about projects or homework should be directed to the professor
or the graduate teaching assistant.