ITEC 380 - Organization of Programming Languages - Fall 2010

Instructor: Dr. Okie, 219 Davis Hall
Phone: Office: 831-5992; Home: 951-7372 (Before 9:00 p.m., please)
Email: nokie (Feel free to send email. I'll reply as quickly as possible.)
Prerequisite: ITEC 324 and ITEC 320
Required Text: Concepts of Programming Languages, Ninth Edition, 2009, Robert W. Sebesta.

Office Hours: MWF: 11:00 - 12:00; TuTh: 1:00 - 1:55 and by appointment. You are welcome to come by at any time and if not busy I'd be glad to help you. Except for classes and meetings, I'm usually in most of the day. You may want to check my complete schedule to see when my meetings and classes are held.

Content: About two thirds of this course is devoted to the study of the major constructs of imperative programming languages (e.g. primitive and structured types and control structures). In the remainder of the course, we will study the logic programming and functional paradigms, writing programs in languages such as Prolog and a variant of Lisp (ie Common Lisp or Racket (fka Scheme)). In addition to using these two languages, you will also write a major project in a scripting language, either Perl or Python.

Course Outcomes: Students who complete the course will be able to

  1. Describe the salient characteristics of several language paradigms (procedural, object-oriented, imperative, declarative/logic, functional), and write small programs in each paradigm.
  2. Distinguish between syntactic issues and semantic issues in programming languages, use formal techniques (such as BNF) in the specification of language syntax and the construction of language parsers, and explain and modify code that assigns semantics to parse trees.
  3. Describe, and discuss the effects of, different forms of variable binding, scoping, and lifetime.
  4. Define type safety, static and dynamic typing, explicit and implicit type declarations and coercions, and function types; and describe their roles in program development.

Semester Schedule: We will cover much of chapters 1-10, in order, and 16 (Logic Programming) and 15 (Functional Programming). Exams will be around weeks 6 and 11.

Communication: I will post relevant course information on the course web page as well as send announcements via email.  It is your responsibility to be aware of this information, as well as all information presented in class, of course.

Course web page: http://www.radford.edu/~nokie/classes/380. Please remember that I frequently revise my notes pages and they can change at any time, including just before and after class.

Evaluation:
Per cent Activity
50 Homework and Programs
30 Two in-class tests
20 Comprehensive final exam (8 a.m. - 10 a.m. Tuesday 12/14/10)
100 Total

Homework problems: You will complete several problem sets which will normally come from the exercises at the end of each chapter. Assignments will be graded on correctnesss and completeness, as well as neatness, clarity, and grammar. Unless otherwise specified, assignments will be due in class, on paper, and electronic submissions will not be accepted. Please use the course grades page to verify that I recorded your grades correctly, and keep all graded work until after you have received your course grade.

Programming assignments: One of the most interesting parts of the semester will be the programs that you will write. These will use the languages Prolog, a Lisp variant, and a scripting language. The first two of these languages are significantly different from the languages you've seen in other courses. Typically you will do two assignments in each language, the first will be to familiarize you with the language and the second will have more substance.

Program grading: Programs with compilation errors will normally receive a grade of 25 or less. Programs with runtime errors will normally receive a grade of 75 or less. Programs with incorrect results will normally receive a grade of 85 or less. Programs which do not use specified features will normally receive a grade of 85 or less.

Programming assignments should, of course, use appropriate style (e.g. use of white space, suitable variable names, and meaningful comments internal to your code and in headers to files and procedures). The documentation should include a header that includes your name, the date, a problem description, the language, the system, and instructions for compilation. Style is normally worth about 20%.

Program submission: Programs will be turned in using the unix command submit. This command copies the specified files to the specified submit directory. After you submit your files, you should use submit to verify that submit copied the files successfully. You should read the instructions for using submit. Note that submit is NOT the same as a dropbox. Remember that if you submit the same file twice, the later submission replaces any files with the same name that were submitted earlier. If you are off campus or in another lab, then you should use the submit command from rucs. In the past, submit would only work from rucs2. It now appears to also be working from any of the unix workstations in the unix lab. To access rucs, you should use the free secure shell client such as PuTTY.

Always make sure that you keep a copy of your programs in case it gets lost or in case you make a mistake with the submission. Also make sure that you don't do anything that would change the date of your file copies so that if there is a problem we can verify when you did the work.

Please use the course grades page to verify that I recorded your grades correctly. For your safety, you should keep all graded work until after you have received your course grade.

Attendance: Attendance is not required; however you will find it much easier to make a good grade in the class if you come to class. You will not be allowed to make up any in-class activities that you miss. Good attendance and class participation can be to your benefit if your final grade for the course is borderline.

Laptops: Laptops are not to be used during class unless you have permission or you are told to use them. Research shows that multitasking limits concentration and hurts learning, and experience shows that laptop distraction typically lowers a student's performance in a course by a full letter grade. Laptops are also distracting to others in the class.

Late policy: Unless otherwise specified, late homework assignments will not be accepted. Programming assignments will normally have a 10% per day late penalty. Typically I will give each student one opportunity to turn in a written assignment late, but you must ask for permission to do this.

Exams: In exceptional circumstances I may give permission to miss an exam if you contact me in advance. In such cases the weight of your final will be increased. Otherwise a missed exam will be worth 0 points.

Honor Code: This class will be conducted in strict observance of the Honor Code. Please refer to your Student Handbook for details of expected behavior. Please be aware that if I suspect that you have violated the Honor Code, then I will not hesitate to file charges with the Dean of Students Office.

Of course, all work that you submit for grading must be your own. In relation to programs specifically, you may discuss with other students what task your program is supposed to accomplish. However, you may not discuss how a program is to accomplish its task with anyone except me or an authorized tutor. Similarly, you may discuss how a feature of a language works, but you must not let anyone write code for your and you must not use someone else's solution as a basis for your own. If you receive any help of any kind on an assignment (such as using a utility routine that you find in a book), then the work that you turn in must give credit for that help.


Last modified on