Final Exam: May 11, 2006, 8:00 -- 10:00. a.m.
Online discussion using HyperNews
New Information:
5/10/2006
5/9/2006
The cutoffs I have mentioned are one thing. Please remember that there is a requirement, clearly stated in the first lecture and also described on this page, that all homeworks have to have been submitted for a passing grade.
5/5/2006
1/16/2006
Course Text
The required text is Programming Languages: Concepts and Constructs
(Second Edition), Ravi Sethi, ISBN 0-201-59065-4.
You will be reading a few research/expository papers during the term. These should be available in the form of a bulk pack from the bookstore before the start of the term. You should try to get the bulk pack as soon as possible: the first homework requires you to read a couple of papers in this pack.
Finally, there is an optional text: Elements of ML Programming, J.D. Ullman, ISBN 0-13-790387-1. This book is useful if you want to learn more about ML and, thereby, about functional programming languages in general. This book will not be available at the bookstore, but you can order it electronically from many places.
When purchasing the text, you may want to look around on the Web to be sure that you are paying a reasonable price. A couple of places that you might try are http://www.dealtime.com and http://www.bookpool.com. (If you have found specific other places with better prices on the books for this course, let me know and I will add a link here.)
Course Description and Objectives
This course will provide an introduction to the
area of programming languages. The focus will be on conceptual
issues. Aspects relating to the structure, usability and
implementation of a variety of programming languages and paradigms
will be studied. Much of this material will be presented in the form
of case studies of existing programming languages such as Pascal, C,
C++, Java, ML, Scheme, Haskell and Prolog. Some programming in each of these
languages will be needed in order to clearly understand the issues
that we will study. However, the eventual purpose of the course is
not to learn to program in a variety of different
languages. Rather, the objective is to obtain a general understanding
of the idea of a programming language; such an understanding might be
useful at a later stage in quickly assimilating information about any
new language that is encountered and in making judgements about its
implementability and usefulness for specific programming tasks. Also,
while you will not necessarily be ready at the end of this course
to design or implement new programming languages, you should be
adequately prepared for advanced courses that address these aspects.
Lectures will often cover material not directly available from the book. You will be responsible for this material as well. I may sometimes provide supplementary written material or papers, but I cannot do this all the time. Attending lectures and keeping abreast of discussions is therefore very important. Students who have not done this have had difficulty with the course in the past.
Half the grade for the course will be determined by homework assignments and the other half by exams. Assignments will be given roughly every other week. Homework must be turned in on the due date before the start of class. Late homeworks will, in general, not be accepted. While each homework will contribute a specific amount to the final grade, you are expected to turn in all of them to obtain a passing grade in the course.
There will be two exams, a mid term and a final. The mid term is scheduled for March 7, 2006 and the final for 8:00-10:00 a.m. May 11, 2006. The midterm will account for 40% of the exam grade (i.e. 20% of the overall grade) and the final will account for 60% of the exam grade (i.e. 30% of the overall grade).
Issues such as presentation elegance, clarity and conciseness of expression and the insights offered will be taken into account in grading. The Web page for homeworks discusses these points in more detail and also explains matters of protocol.
You are encouraged to participate in discussions, both in class and over HyperNews. While no specific role is assigned to this in grade determination, it could have an intangible effect, such as in settling borderline cases.
And a word about collaboration and outside help. Insofar as this serves in improving your understanding of the course material, it is actually encouraged. However, you are expected to do all the work that counts towards your grade completely independently.
This course will expect most of you to learn new things. In particular, you will encounter new languages and new ways of thinking about programs. Moreover, the focus will be on things that have a long term impact on your understanding. Thus, we will not really be discussing how to program in Java, C++ or some other language but, rather, how to think about programs and the devices available in these and other languages. You may feel diffident at times doing this---all of us have an initial desire to stay with familiar things---but it can be very rewarding in the end. Also, you should know that the TA and the instructor will give you needed assistance so long as you also make the effort.
Academic Honesty
At the outset, I encourage all of you to discuss material in the
course with each other. Using HyperNews is a great way
to do this. Discussions of this sort benefit everyone: it can clear
up bottlenecks in understanding and explaining things to others also
sharpens your own understanding.
This being said, I expect the work that each of you turn in for a grade to be representative of your independent thinking. You may discuss assignments with each other to the extent that this clarifies your understanding of what is being asked, but this discussion must stop before it gets anywhere near the details of a solution. If you need help at this point, you should seek this from me or the teaching assistant and we can decide what is and is not appropriate. In a similar vein, it is not acceptable to simply reproduce solutions to problems that you obtain from someone outside of class.
There will be penalties for breaches of this policy, ranging from no credit for the work in question to a failing grade in the course. On a more personal note, this kind of dishonesty interferes seriously with your own ability to learn and so there is no benefit to it in the long run.
Last modified: May 10, 2006 by gopalan atsign cs.umn.edu