Syllabus: CS450G, Programming Languages

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).

Times and places

Class CB 247, TR 12:30p-1:45p TR
Instructor Raphael Finkel
Web http://www.cs.uky.edu/~raphael/courses/CS450.html
E-mail raphael @cs.uky.edu
Office  Hardymon 228 (7-3885)
Office hours M 9:00a-10:30p, Th 3:00p-4:30p.
(in CRMS)

Assignments

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.

References

The text for the course is Robert W. Sebesta, Concepts of Programming Languages, Addison-Wesley (8th edition), ISBN 0-321-49362-1 2008.

There are many other good books on programming language design, including:

  1. Allen Tucker and Robert Noonan, Programming Languages: Principles and Paradigms (2nd edition) McGraw Hill 2007, ISBN 978-0-07-286609-4
  2. Bruce J. MacLennan, Principles of Programming Languages, Third Edition: Design Evaluation and Implementation. Oxford University Press 1999, ISBN 0-19-511306-3
  3. Terrence W. Pratt, Marvin V. Zelkowitz, Programming Languages: Design and Implementation, Prentice Hall, Englewood Cliffs, NJ (3rd edition) 1996
  4. Ravi Sethi, Programming Languages: Concepts and Constructs, Addison-Wesley 1989.

Schedule

 Th
Jan 8 1
Jan 15 2
Jan 22 3
Jan 29 Pa 5
Feb 5 6
Feb 12 Sb
Feb 19 7
Feb 26 m
Mar 4 Lc
Mar 11 n
Mar 18 9
Mar 25 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
Introduction to Fortran
Assignment 1 (Fortran) due
Introduction to Pascal
Assignment 2 (Pascal) due
Introduction to Smalltalk
Assignment 3 (Smalltalk) due
Introduction to Lisp
Assignment 4 (Lisp) due
Absolute deadline for submitting work
Midterm exam
Discuss midterm exam
No class - University holiday
Final: May 1 (Thursday) 1:00p in classroom

Grading

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

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 penalty

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.

How to submit programs

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.

Responsible use of computers

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.

Plagiarism

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.