CS 450G is an introduction to modern programming language concepts. The course concentrates on imperative, procedural languages. It covers formal syntax specification, primitive and structured data types, control structures, procedures and parameter passing, block structure, abstract data types, and runtime storage organization. It touches on other language models, such as functional, object-oriented, logic, string, and concurrent programming. It does not teach entire languages, but takes examples from imperative languages such as Fortran, Pascal, C, and Ada, and from other languages such as Lisp (functional), Smalltalk (object-oriented), and Prolog (logic).
Class CB 247, TR 12:30p-1:45p TR Instructor Raphael Finkel Web http://www.cs.uky.edu/~raphael/courses/CS450.htmlraphael @cs.uky.eduOffice Hardymon 228 (7-3885) Office hours M 9:00a-10:30p, Th 3:00p-4:30p. (in CRMS)
You will write
a series of generally small programs to elucidate programming styles.
I encourage you to use the machines in the CSLab
(http://www.cslab.uky.edu/)
on the second floor of the Engineering Annex and the Multilab
(http://www.cs.uky.edu/facilities/multilab.php)
across the hall in the same building.
The languages you require will be available there.
You automatically get a class account at the Multilab.
http://www.cslab.uky.edu/.
You will need to use a secure shell to contact these computers from elsewhere;
you can use ssh from Unix or putty
(http://www.chiark.greenend.org.uk/~sgtatham/putty/)
from Win32 machines.
If you use ssh or putty to access the Multilab, it is best to
connect to penstemon.cs.uky.edu or coreopsis.cs.uky.edu.
You may construct your programs on any computer you wish, but it must run
properly on Linux in the Multilab.
There are many other good books on programming language design, including:
T Th Jan 8 n 1 Jan 15 F 2 Jan 22 3 3 Jan 29 Pa 5 Feb 5 5 6 Feb 12 6 Sb Feb 19 7 7 Feb 26 8 m Mar 4 M Lc Mar 11 n n Mar 18 8 9 Mar 25 9 10 Apr 1 11 11d Apr 8 12 12 Apr 15 13 15 Apr 22 16e 16 May 1 f
Code Meaning 1-16 Chapter in the textbook F Introduction to Fortran a Assignment 1 (Fortran) due P Introduction to Pascal b Assignment 2 (Pascal) due S Introduction to Smalltalk c Assignment 3 (Smalltalk) due L Introduction to Lisp d Assignment 4 (Lisp) due e Absolute deadline for submitting work m Midterm exam M Discuss midterm exam n No class - University holiday f Final: May 1 (Thursday) 1:00p in classroom
You will be graded about 50% on programs and 50% on the tests. The final will only cover material in the course covered after the midterm.
Our accreditation association and the policy of the Graduate School require that there be different assignments and grading criteria for undergraduate students and graduate students in 400G and 500-level courses. Graduate students must contact me in the first week for details on the special criteria I will apply to you.
For programs, correctness is an important criterion, but is by no means the whole story. Grades on programs are based on
http://www.cs.uky.edu/~raphael/writing.html
for guidance. Run all code and documentation through a spelling checker such
as ispell.
http://www.cs.uky.edu/~raphael/checklist.html
for suggestions on programming standards, and
http://www.cs.uky.edu/~raphael/programming.html
for techniques specific to a few languages.
Extra credit is available on all programs. Don't attempt extra work until you have the basic assignment ready to hand in. Extra credit will only be used after initial final grades are assigned to raise grades that are close to borderlines.
Late programs are penalized 3% for each day late, starting at class time on the due date, but not including weekends or holidays. (Allowances for computer failure are announced in class and by the class mailing list.) The maximum penalty is 7 days late; after that, you may hand in the program and still get 79% until class time on the absolute deadline: noon on Tuesday of the last week of classes. No extra credit is available on late programs. If you turn in a program early, you will gain early credits (which also ignore weekends and holidays), which are only used to offset late penalties on other assignments but have no other value.
Submit all work electronically. Collect all the files in your assignment
(including program, documentation, test data, and output, into a single file
(you may use shar, rar, zip, gzip, bzip2, or
tar) and mail it to
raphael @cs.uky.edu either as the entire file or as an attachment.
The time at which you mail the assignment determines whether it is submitted on
time.
You are expected to use the computing facilities on campus in accordance
with standards of honesty and personal
conduct. Those standards, outlined in the University of Kentucky
Policy governing access to and use of University of Kentucky computing resources ,
available at http://ukcc.uky.edu/policy.html,
call for all members of the community to act in a responsible,
ethical, and professional way. This note offers guidelines in applying those
standards to use of these facilities.
The operating systems used by our facilities encourage sharing of information. Security mechanisms for protecting information from unintended access, from within the system or from the outside, are minimal. These mechanisms, by themselves, are not sufficient for a large community in which protection of individual privacy is as important as sharing. Users must supplement the system's security mechanisms by using the system in a manner that preserves the privacy of others.
For example, users should not attempt to gain access to the files or directories of another user without clear authorization from the other user (typically that authorization is expressed by setting file access permissions to allow public or group reading). Nor should users attempt to intercept any network communications, such as electronic mail or user-to-user dialog. A shared program should not secretly collect information about its users. Personal information about individuals, which a user would not normally disseminate, should not be stored or communicated on the system. Examples of such personal information are grades or letters of recommendation.
Actions taken by users intentionally to interfere with or to alter the integrity of the system are out of bounds. Such actions include unauthorized use of accounts, impersonation of other individuals in communications, attempts to capture or crack passwords or encryption, and destruction or alteration of data or programs belonging to other users. Equally unacceptable are intentional efforts to restrict or deny access by legitimate users to the system.
All academic work, written or otherwise, that you submit is expected to be the result of your own thought, research, or self-expression. You may certainly discuss the programs with each other, but you must not show each other your code; everyone must develop the code completely independently. It is a serious offense to allow other students to copy your work or to copy the work of other students (even if it is in a public computer file). If you borrow ideas, algorithms, wording, or code from other sources, you must acknowledge that fact or you have committed plagiarism. If you directly take more than about 4 words in a row from any source, you must indicate that you have done so, typically with a footnote or an in-line citation, using indentation or quote marks to set off the quoted text. (Some of this text is taken from the EDP202 plagiarism guide.) Offenses against this policy are punished quite strictly. I catch plagiarism practically every semester.