A study of the concepts of programming languages as realized in a variety of commonly used languages, with emphasis on language definition and structure.
CSCI 2125, Data Structures, with grade of C or better.
Haskell: The Craft of Functional Programming, 2nd ed., Simon Thompson, Addison Wesley, 1999.
Programming Language Pragmatics, Michael L. Scott, Morgan Kauffman, 2000.
Both are required.
You will work your way through the Haskell text mostly on your own. Class discussion will be limited, for the most part, to answering questions.
In the Programming Language Pragmatics text, we will cover at least the following chapters and sections: 1, 2.1, 3, 6, 7, 8, and 10.
My office is MATH 334. I will generally be available the hour before class, 5:00 - 6:00 p.m. Please try to come by then, or make an appointment if you cannot.
You can contact me at fred@cs.uno.edu. The course page is http://www.cs.uno.edu/~c4501.
We will have a mid-term exam and a final. We may also have periodic quizzes if this proves necessary. The mid-term is tentatively scheduled for October 17. The final exam is scheduled Saturday, December 15, 7:00- 9:00 p.m. However, I plan on having the final at the time scheduled for Wednesday-only classes, Wednesday, December 12, 7:00 - 9:00 p.m. No makeup exams will be given.
You will be expected to do regular exercises from the Haskell text. We will probably have a number of additional programming assignments as well. I have not yet decided whether there will be a programming project. Graduate students will be assigned an additional project for the course.
Homework assignments are generally due before class on the assigned date. Work turned in late will be graded at the end of the semester, at my discretion. Homework should be handed in to me, or at your risk, left in my mailbox in MATH 312. Please do not leave homework for me in the i/o-user services room, MATH 319.
You will be given the option to do pair programming for some homework. Procedures for this will be explained separately. Otherwise, homework assignments are individual projects . Collaboration is considered cheating, and incorporation of un-referenced ideas or materials that are not your own is considered plagiarism.
At the beginning of each class, you should submit a signed paper indicating which exercises in the Haskell text you know how to do. You may be called upon during the class period to explain any problem that you claim.
Letter grades of A will be assigned for excellent work of exceptional quality, B for good work, C for work that is minimally satisfactory, D for unsatisfactory work, and F for completely unsatisfactory work. Note that generally a program must generally work correctly to be considered "minimally satisfactory."
Final exam is 30%, mid-term 20%, class participation and quizzes 15%, homework assignments 35%.
Letter grades will be assigned as [90 - 100] = A, [80 - 90) = B, etc.
In order to earn an A for the course, both your course average and your exam average must be A.
In order to earn a C for the course, both your course average and your exam average must be C.
Final grades may be curved up at my discretion, but don't count on it.
If you are auditing the course, you must attend class regularly and take the examinations to receive a satisfactory audit.
Finally, I must call your attention to the University's policies regarding academic dishonesty. (See appropriate pages of the Student Handbook.) Academic dishonesty includes cheating, plagiarism, and collusion. In particular, it includes "the unauthorized collaboration with another person in preparing an academic exercise" and "submitting as one's own any academic exercise prepared totally or in part for/by another."
In there is evidence of unauthorized collaboration or of plagiarism, all involved students will be assigned a grade of 0 on the exam or exercise, and the Assistant Dean for Special Student Services will be notified for possible disciplinary action.
I strongly suggest that you keep all homework source in a protected directory.