CSCI 431 -- Organization of Programming Languages
   
Catalog Description A comparative study of programming languages designed to provide the following: (1) An understanding of language features and limitations. (2) An increased ability to learn new languages. (3) An understanding of the theoretical foundations of languages and the significance of implementation. (4) An improved background for choosing and using different programming languages.
Prerequisites: CSCI 333 (Data Structures).
Offered: Fall. (3)
   
Course Description The goal of this course is to provide a framework for thinking about programming languages. The course is about how programming languages work, focusing on concepts that underlie various languages that the student is likely to encounter.
   
Course Objectives As a result of taking this course, the student will be able to think about programming languages analytically. This includes the abilities to:
  1. Separate syntax from semantics
  2. Compare programming language designs
  3. Learn new languages more quickly
  4. Use standard vocabulary when discussing languages
  5. Understand basic language implementation techniques
   
Required Textbook Programming Language Pragmatics , by Michael Scott, Morgan Kaufmann, 2000.,
   
Class Time Monday, 6:00 to 8:30 PM, RH 228
   
Instructor
Dr. J D Brownsmith
Office: RBH 220
Telephone: 232-2275
e-mail: brownsmith@cs.unca.edu
Office Hours: 11-noon and 1-2 PM on TTh, and by appointment



Tentative Course Schedule
Week Dates Slides Class Discussion Topics Due Today
1 W Aug 18     University classes start today  
2 M   Aug 23 L1:
    Welcome Introduction to the course
    Syllabus
    Student background survey
    An Historical Perspective
    ACM Computing Classification - Software
3 M   Aug 30 Chapter 1 L2:
Chapter 1: Introduction to Programming
  Languages and Compilation
1.1-1.7, p 1-25
ICD TRQ 1.1, 1.3, 1.5, 1.6, 1.7, 1.12,
1.17, 1.25
ICD TE 1.1, 1,7, 1,10, 1,11
Papers selected for team reports.
Towards a Natural Theory of Programming Languages
4 M   Sept 6 Labor day. No classes.
5 M   Sept 13 Chapter 2 L3:
Chapter 2: Programming Language Syntax
2.1 Specifying Syntax, Regular Expressions and
     Context-Free Grammars, p 31-38
2.2 Recognizing Syntax: Scanners and Parsers, p 39-48
ICD,SFG TR Team report 1, paper 15
    (Karen, Mat)
Snacks: Karen
ICD TRQ 2.1, 2.3, 2.4, 2.9, 2.11, 2.17
ICD TE 2.1, 2.6
6 M   Sept 20
Chapter 3
Java Passing Arguments
L4:
Chapter 3: Names, Scopes, Bindings
3.1 The Notion of Binding Time, p 105-108
3.2 Object Lifetime and Storage Management, p 108-115
3.3 Scope Rules, p 115-139 (omit Modules p 122-129)
ICD,SFG TR Team report 2, paper 4
    (Adam, Alexander)
Snacks: Adam
ICD TRQ 3.1, 3.3, 3.4, 3.5, 3.6, 3.7, 3.13,
ICD TE 3.1, 3.4, 3.5
7 M   Sept 27
Chapter 3
Java Field Accessibility
L5:
Chapter 3: Names, Scopes, Bindings
3.3 Scope Rules, p 115-139 (continued)
3.4 The binding of Referencing Environments, p 139-144
ICD,SFG TR Team report 3, paper 5
    (Mat, Chris)
Snacks: Keith
8 M   Oct 4 Chapter 6.1
Chapter 6.2
L6:
Chapter 6: Control Flow
6.1 Expression Evaluation, p 249-267
6.2 Structured and Unstructured Flow, p 267-270
ICD,SFG TR Team report 4, paper 2
    (Karen, Aidar, Michael)
SFG,ICD Java Notebook
Snacks: Tom
9 M   Oct 11 Chapter 6.3
Chapter 6.4
L7:
Chapter 6: Control Flow (continued)
6.3 Sequencing, p 270-271
6.4 Selection, p 271-279
6.5 Iteration, p 280-296

ICD,SFG TR Team report 5, paper 1
    (Tom, Keith, Chris)
ICD TRQ 6.3, 6.6, 6.11, 6.13,
    6.16, 6.17, 6.21, 6.22
ICD TE 6.1, 6.6
Snacks: JDBrownsmith - popcorn
10 M   Oct 18 Chapter 6.5
Chapter 6.6
L8:
Chapter 6: Control Flow
6.5 Iteration, p 280-296 (continued)
6.6 Recursion, p 297-303
Quiz
QuizFormat.doc
Snacks:
11 M   Oct 25 Chapter 7 L9:
Chapter 7: Data Types
7.1 Type Systems, p 319-330.
7.2 Type Checking, p 320-351
ICD TRQ ...
SFG,ICD
ICD,SFG TR Team report 6, paper 3
    (Karen, Alexander)
Snacks: Karen
ICD TRQ 7.1, 7.2, 7.4,
    7.6, 7.11
12 M   Nov 1 Chapter 7 L10:
Chapter 7: Data Types continued
7.3 Records, p 351-364
7.4 Arrays, p 365-379

ICD,SFG TR Team report 7, paper 13
    (Aidar, Mat, Alexander)
Snacks: Alex
ICD TRQ 7.13, 7.18, 7.22, 7.23,
    7.24, 7.25
13 M   Nov 8 Chapter 8 L11:
Chapter 8: Subroutines and Control Abstraction
8.1 Review of Stack Layout, p 427-431
8.2 Calling Sequences, p 431-442

SFG,ICD Java Notebook
ICD,SFG TR Team report 8, paper 8
    (Adam, Keith)
Snacks: Chris
ICD TRQ 8.1, 8.2
ICD TE 8.4
14 M   Nov 15 Chapter 8 L12:
Chapter 8 Continued
8.3 Parameter Passing, p 442-459
8.5 Exception Handling p 464-474

ICD,SFG TR Team report 9, paper 11
    (Tom, Aidar, Michael)
Snacks: Tom & Michael
ICD TRQ 8.7, 8.8, 8.19, 8.20
ICD TE 8.9
15 M   Nov 22
Chapter 10
L12:
Chapter 10: Data Abstraction and Object Orientation
10.1 Object Oriented Programming, p 529-539
10.3 Initialization and Finalization, p 546-554
7.7.3 Garbage Collection, p 395-401
ICD,SFG TR Team report 10, paper 14
    (Adam, Chris)
Snacks: Alex
ICD TRQ 10.1, 10.2, 10.3, 10.11
ICD TE 10.1
ICD TRQ 7.34, 7.35, 7.36, 7.37
16 M   Nov 29 Chapter 10 L14:
Chapter 10: Data Abstraction and Object Orientation
10.4 Dynamic Method Binding, p 554-564
10.5 Multiple Inheritance, p 564-574

SFG,ICD Java Notebook
ICD,SFG TR Team report 11, paper 16
    (Tom, Michael)
Snacks: Matt
17 M   Dec 6   Final Exam Week CSCI 431.001 (TBD)
SFG Final Exam, Monday 6 - 8:30 PM
Snacks: JDBrownsmith

Abbreviations Used in the Course Schedule
Activities
ICD In class discussion
SFG Submit for grading
Items to be submitted
TR Team Report
Textbook Exercises
TRQ Textbook Review Questions
TE Textbook Exercise


Resources

Textbook Resources
Programming Language Pragmatics home page
Textbook Errata: Programming Language Pragmatics
http://www.cs.rochester.edu/u/scott/ Professor Scott's Home page
Team Report Resources
TR Team Report: Process, Structure and Guidelines
Paper 1: (t2/3) Growing a Language (a pdf file)
Paper 2: (t2/3) MobSoftware.htm
Paper 3: (t2/t3) HenryBakerAda1997_04.htm I Have a Feeling We're Not In Emerald City Anymore
Paper 4: (t2) A Primer for Aspect-Oriented Programming in Java Tim Stevens, June 25, 2004
Paper 5: (t2) Seven Deadly Sins of Introductory Programming Language Design.
Paper 7: (t2) BeatingTheAverages.
Paper 8: (t2) GoToStatementConsideredHarmful.
Paper 9: (t2/3) Building bug-free O-O Software: An introduction to Design By Contract.
Paper 10: (t2/3) Exactly 1800 Words on Languages and Parsing.
Paper 11: (t3) Lisp: Good News, Bad News, How to Win Big.
Paper 12: (t2/3) Program Development by Stepwise Refinement.
Paper 13: (t3) Scripting: Higher Level Programming for the 21st Century.
Paper 14: (t2/3) Supporting Dynamic Languages on the Java Virtual Machine.html.
Paper 15: (t2) The Poetry of Programming.
You must find a second aricle on this subject.
...And here it is:
Programming as Poetry internet copy.
Programming as Poetry local copy.
Paper 16: (t2/3) The Hundred Year Language - local copy.
           http://www.paulgraham.com/hundred.html
Abbreviations used
t2    Team of two
t2/3    Team of two or three
t3    Team of three
Java Programming Language Resources
Java home page at Sun.com
Java Language Specification, Second Edition (Local copy)
http://java.sun.com/docs/books/jls/ Java Language Specification, Second Edition (Internet copy)
Java Language White Paper
Sun's Gosling: New Java Flavors Brewing
General Programming Language Resources
The Most Widely Used Programming Language
Programming Languages
http://www.people.ku.edu/~nkinners/LangList/Extras/langlist.htm Language List
http://home.nvg.org/~sk/lang/lang.html Alphabetical list of programming languages
http://directory.google.com/Top/Computers/Programming/Languages Google's top programming languages
Compilers and Parser Generator Resources
http://www.idiom.com/free-compilers
On-Line Computing Dictionaries
FOLDOC Free On-Line Dictionary of Computing
http://www.google.com define:
http://www.webopedia.com/
Extra Credit
ExtraCredit.html


Programming Language Examples

APL
http://www.users.cloud9.net/~bradmcc/APL.html Some recollections on a Programming Language
Ada Documents and Programs
Assembly Language Documents and Programs
2_sample.txt 2_sample.txt
3_sample.txt 3_sample.txt
calc.txt calc.txt
factorial.txt factorial.txt
COBOL Documents and Programs
DATET.COB.txt
DATEP.COB.txt
DATEW.COB.txt
Fortran Documents and Programs
alscal.f90.txt
bayes_beta.f90.txt
Modules and Module Procedures
PL/I Documents and Programs
IBM Enterprise PL/I - internet link
PLI_programming_language.htm
RHolt.fatal_disease.article
Languages Related To PLI


Grading
In class degree of engagement
(e.g., preparedness, participation, active listening)
10%
Quiz (1 at 10%) 10%
Java Notebook 15%
Team Reports on Assigned Papers (3 at 15% each) 45%
Final Exam 20%

Assessment

Evaluation of each assignment will use the specific criteria discussed in this syllabus and discussed in class. The following rubric will be used to evaluate the team reports, quiz, and exam answers:

An Outstanding Report/Paper (grade of A) is a well organized paper that can be understood without explanation from the author, is well-written, clearly conceptualized, addresses all stated criteria, reflects a great deal of time investment in the assignment, is carefully crafted, and adds at least one additional criteria. Be sure to identify in your report the added item, lest I should miss it.

A Good Report/Paper (grade of B) is well organized, can be understood without explanation from the author, is well written and clearly conceptualized, and addresses all the stated criteria.

A Satisfactory Report/Paper (grade of C) is organized but not especially well organized, can be understood only with some effort or explanation from the author, addresses most or all the stated criteria. If your assignment merely meets the requirements you will receive a C.

Poor Report/Paper (grade of D or below) is unorganized, poorly written/conceptualized, is missing criteria.

In order to encourage the development of good communication skills which are essential in the business environment, sloppy or incorrect English in any assignment will affect your grade.

Letter grades are assigned based on the percentage of available points obtained by a student. 100% to 90% guarantees an A, 89% to 80% guarantees a B, and so on. The instructor reserves the option of relaxing the cut-offs for a letter grade in special circumstances. Plus and minus grades will be used for this course.


Course Requirements

Team Reports

You are expected to participate in three reports over the course of the semester. One of these should be in a team of two, one of these in a team of 2 or 3, and one of these in a team of 3. This guideline may be changed in class depending on the number of students enrolled.

You can select from one of the prepared project descriptions or create your own project. More details on the team reports are provided in class and in the Trem Reports Resources table on this web page.

Java Notebook: What to do when reading the text book

Many students are not familiar with all the programming languages sited in the text book - such as Snobol, Ada, Euclid, APL, C, C++, Pascal, and even if familiar, may not be able to understand the particular nuance being illustrated. However, all students taking this course are familiar with Java.

Therefore, when reading of a lnaguage feature, determine the Java "story" with regard to that feature. For example, Section 3.2.3 (page 114) is about garbage collection. Your notes for that day would include an item such as: Garbage Collection: Java implements it; automatically runs as needed to reclaim space in the heap, you can call it with System.gc().> and so on about what you know about Java garbage collection.

You may modify you notebook before, during, and after each class session.

Turn in your notebook as indicated on the syllabus.

The structure of each class session and in-class participation

We will form in-class discussion groups. The groups will be assigned by the instructor and will remain in place for two weeks.

The group will first process the textbook review questions (TRQ) that were assigned and prepare to provide answers when called upon. Textbook review questions (TRQ) are fact-based questions and are based on the reading assignment. These questions will be reviewed in class as they form the basis for follow-on discussions.

The small groups will then process the other textbook assignments in the same manner.

These in-class discussions of the textbook review questions (TRQ) and the other textbook exercises (i.e., TE) require your preparation. Before class you should prepare an answer to each question assigned. Your preparation may consist of answering the question completely or providing an answer outline. As part of your answer, list any parts you do not understand, and any extensions (in the form of: "Therefore...) that occur to you. In either case, references textbook pages are appropriate and useful. These answers will not be collected but are your basis for in-class discussion, study guide and reference.

We will typically have a theme, problem, or issue that the reading material addresses. We will apply what we have read to the issue, theme, or problem.


Attendance Policy

Your attendance at all class sessions is crucial. The class will be driven by your participation, thoughtful reflection, and experience, not solely by the instructor's expertise. Attend ALL class sessions, complete the weekly readings and prepare the assignments. You will have one (sorry, just one) personal day for absence, should you need it. For each additional class period missed, your course grade will be reduced by one letter grade (e.g., from A to B).

Academic Integrity Policy

The assignments that you create are your way of telling the instructor about your mastery of this course. All of the assignments must represent a unique and special effort on your part. All assignments are individual in nature unless otherwise noted. Any cases involving suspected academic dishonesty result in a grade of zero for the assignment. See Student Responsibilities - Academic Honesty at http://www.unca.edu/catalog/academicregs.html#grading.

Information

You should budget at least 6 hours outside of class per week for assignments, study and reading for this course.


CSCI logo Return to the UNCA Computer Science home page