CSCE 330: PROGRAMMING LANGUAGE STRUCTURES
Catalog
Description:
330—Programming Language
Structures. (4) (Prereq: CSCE 245)
Formal specification of syntax and semantics; structure of algorithms; list
processing and string manipulation languages; statement types, control
structures, and interfacing procedures.
Prerequisite(s) By
Topic:
Algorithmic
design
Discrete
mathematics
Knowledge of an imperative
object-oriented language (e.g., Java or C++)
Classical data
structures
Textbook(s) and Other
Required Material:
Concepts of Programming
Languages,
4th edition, Robert W. Sebesta, Addison Wesley, 1999.
Language-specific manuals or
primers, such as Elements of ML
Programming, ML97 edition, Jeffrey D. Ullman, Prentice-Hall,
1998.
Computing Platform:
Unix, Windows
2000
Course Objectives:
{Assessment
Methods Shown in Braces}
1.
Categorize a
language as imperative (procedural), functional (applicative) or declarative
(logic). {homework, tests}
2.
Understand and
use syntax descriptions in EBNF. {homework, tests}
3.
Explain the
procedural semantics of procedural languages and the denotational semantics of
procedural languages. {homework, tests}
4.
Write code in
functional and logic languages (e.g., ML and Prolog).
{homework}
Topics
Covered:
1.
Evolution of major
programming languages (2 hours)
2.
Formal description of
programming language syntax (4 hours)
3.
Denotational semantics (3
hours)
4.
Interpreters, compilers,
assemblers (2 hours)
5.
Data abstractions (3
hours)
6.
Control abstractions (3
hours)
7.
Run-time behavior of
programs and procedural semantics (5 hours)
8.
Programming environments (3
hours)
9.
Functional languages (9
hours)
10.
Logic languages (8
hours)
Laboratory
Projects
There are several
programming assignments.
Syllabus
Flexibility:
Moderate. The choice of textbook
and languages is up to the instructor.
Relationship of Course to
Program Outcomes:
The contribution of each
course objective to meeting the program outcomes is indicated with the scale:
3 = major contributor, 2 = moderate contributor, 1 = minor contributor. Blank if not
related.
|
|
Program
Outcomes | ||||||||||
|
1. Logic & Math |
2. Computing Fundamentals |
3. Apply Computing Principles
|
4. Work on teams |
5. Communicate Effectively |
6. Liberal arts & Soc.
Sciences |
7. Basic Science and Lab
Procedures |
8. Learn New Tools &
Processes |
9. Employed upon Graduation |
10. Application Area |
11. Electronics and Digital Sys
Design | |
|
1.
Categorize a language as imperative (procedural), functional (applicative)
or declarative (logic). |
|
|
1 |
|
|
|
|
2 |
|
|
|
|
2.
Understand and use syntax descriptions in EBNF. |
1 |
2 |
|
|
|
|
|
1 |
|
|
|
|
3.
Explain the procedural semantics of procedural languages and the
denotational semantics of procedural languages |
1 |
3 |
1 |
|
2 |
|
|
|
|
|
|
|
4. Write
code in functional and logic languages |
|
1 |
|
|
2 |
|
|
3 |
1 |
|
|
Estimated CSAB Category
Content:
Algorithms:
0
Data
Structures:
0
Software
Design:
0
Concepts of
Programming Languages
3 hrs
Organization
and Architecture
0
Oral and
Written Communication:
Students will prepare appropriate documentation for all programming exercises and will be required to do an oral presentation, either on a class project or a topic within the area of programming languages.
Social and
Ethical Issues: none
Theoretical
Content:
Syntax and
semantics
Analysis and
Design:
Design of
functional and logic programs; software lifecycle models and programming
paradigms
Class/Laboratory
Schedule:
Lecture: 3 periods of 50 minutes or 2 periods of
75 minutes per week
Course
Coordinator: Marco
Valtorta
Modification
and Approval History:
Initial
description CSCI 330, March 1999
Revised, June
2001
Modified
February 2002 to include an oral and written communication
component